Hinemosの監視通知をGoogle Apps Scriptを用いてスプレッドシートへ出力する
投稿日: / 更新日:
この記事は2年以上前に書かれたものです。情報が古い可能性があります。
こんにちは。
皆さんはGASをご存じですか?
GASとは、Google様が提供するJavascriptライクなプログラミング言語で、
GmailやGoogleスプレッドシートなどのGoogle Apps同士の連携や、
Google Apps ☓ 外部ツールの連携が行えます。
そこで!今回は、Hinemosで監視した結果をGAS用いて、
Google スプレッドシートへ出力してみたいと思います。
■Google Apps関係の設定手順
1.出力先のスプレッドシートの準備
以下のように出力したいシートを編集しましょう。
スプレッドシートID、シート名も後々必要なので控えておきましょう。(確認方法は以下を参照)
・スプレッドシートID
スプレッドシートのURLの以下の部分
1 |
https://docs.google.com/spreadsheets/d/"この部分がスプレッドシートのID"/edit#gid= |
・シート名
2.GASの作成
以下のようにGoogle Drive から左上の「新規」>「その他」>「Google Apps Script」を選択します。
先ほど用意したスプレッドシートの拡張機能からでも可能です。
コードを記入する画面が表示されますので、ここにコードを記入していきます。
今回は以下のようなスクリプトを作成しました。
「スプレッドシートのID」、「シート名」は先ほど控えたものを記入してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
function doPost(e){ //出力先 var ss = SpreadsheetApp.openById("スプレッドシートのID"); var sheet = ss.getSheetByName('シート名'); //取得したデータを成形 var object=JSON.stringify(e); var obj=JSON.parse(object); var contens = obj["parameter"]["payload"]; var json = JSON.parse(contens); //出力処理 var lastrow = sheet .getRange(sheet.getMaxRows(), 1) .getNextDataCell(SpreadsheetApp.Direction.UP) .getRow()+1; sheet.getRange(lastrow,1).setValue(json[0].date);//日付 sheet.getRange(lastrow,2).setValue(json[1].importance);//重要度 sheet.getRange(lastrow,3).setValue(json[2].message);//メッセージ } |
次にこのスクリプトをデプロイします。
コードを記入した画面の右上の「デプロイ」>「新しいデプロイ」を選択します。
左上の「種類の選択」横の歯車アイコンからウェブアプリを選択すると以下のような画面になるので、設定を以下の画面のように設定したら右下のデプロイをクリックします。
完了画面の「ウェブアプリURL」を控えます。
URLをメモしたら完了を押してください。
以上でGoogle側の設定は完了です!
■Hinemosの設定手順
続いてHinemos側の設定を行います。
今回は簡単に監視対象にPing監視を行いたいと思います。
まずはHinemosのマネージャサーバの任意の場所にスクリプトを配置します。
今回は以下のように作成しました。「token」にGASのウェブアプリURLを入れてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
token='ウェブアプリURL' date=$1 message=$3 if [ $2 -eq '0' ]; then priority="危険" elif [ $2 -eq '1' ]; then priority="不明" elif [ $2 -eq '2' ]; then priority="警告" elif [ $2 -eq '3' ]; then priority="情報" fi payload="payload=[{\"date\":\"${date}\"},{\"importance\":\"${priority}\"},{\"message\":\"${message}\"}]" /usr/bin/curl -m 5 --data-urlencode "${payload}" "${token}" |
Hinemosクライアントを使用し、スクリプトが配置されているHinemosマネージャでログインします。
監視設定パースペクティブの監視設定[通知]ビューからコマンド通知を作成します。
各監視結果の取得には、メールテンプレートの置換文字列を利用します。
今回は、以下の3つを利用しました。
・#[GENERATION_DATE] (出力日時)
・#[PRIORITY_NUM] (監視結果)
・#[MESSAGE](出力メッセージ)
実行するコマンドは以下の通りです。
1 |
sh 作成したスクリプトのファイル名 "#[GENERATION_DATE]" "#[PRIORITY]" "#[MESSAGE]" |
次に以下の設定でPing監視を行います。
通知設定には、上記で作成したコマンド通知を設定します。
■監視結果を出力してみる
監視を実行してしてみると…
無事、スプレッドシートに出力日時、重要度、メッセージが出力されました。
■終わりに
今回はHinemosの監視結果をGASを用いてGoogleスプレッドシートへ出力してみました。
GASは簡単なスクリプトで様々なツールと連携ができのが良いですね。なにか色々と応用できそうです。
それでは!!!!!!!!!