LiLz Gaugeでは測定した値がユーザーの設定した閾値を超えたときに、アラートメールを送信できる機能があります。
参照:【計器設定】閾値アラートメールの送信設定を行う
ここではLiLz GaugeのアラートメールをLINEに通知する方法を解説します。
事前準備
- LINEアカウントの作成
アラートを通知したいLINEグループの作成(任意) - Googleアカウントの作成
作成したGmailアカウントをLiLz Gaugeに招待する or LiLz GaugeからのメールがGmailに転送されるように設定する
目次
- LINE Notifyでトークンを発行する
- 指定したLINEグループにLINE Notifyを追加する
- Gmailでフィルタ・ラベルを作成する
- Google Apps Scriptでプロジェクトを作成する
- トリガーを設定する
- テスト
1. LINE Notifyでトークンを発行する
LINEアカウントでLINE Notifyにログインします。
右上のアカウント名から「マイページ」に移動し、「トークンの発行」をクリックします。
任意のトークン名を入力し、アラートを通知したいLINEグループを選択します。
個人管理でグループに通知する必要がなければ「LINE Notify」でも可能です。
発行されたトークンをコピーしてメモ帳などに控えておきます。
2. 指定したLINEグループにLINE Notifyを追加する
トークン発行後、LINE Notifyから通知が来ます。メッセージに従って指定したLINEグループのメンバーにLINE Notifyを追加します。
3. Gmailでフィルタ・ラベルを作成する
Gmailでフィルタを設定していない場合は、LiLz Gaugeのアラートメールのフィルタを設定し、ラベルを作成してください。
今回は、LiLz Gaugeのすべてのアラートメールをフィルタリングするために、「送信元(From):no-reply@lilz.jp & [Notice]を含む」メールを指定しています。
アラートメールには「管理限界」と「規格限界」の2種類あるため、アラートのレベルによって通知を振り分けたい場合や計器ごとに通知先を変更したい場合などは適宜フィルタの設定を調整してください。
ラベルを指定してください。未作成の場合は任意のラベル名でラベルを作成してください。
その他の項目は任意で指定してください。
先ほど作成したラベルの中で、今度はLINE通知済みかどうかを管理するためのフィルタを作成します。
※GmailをLiLz GaugeのLINE通知のみで利用する場合などは、このステップは省略しても構いません。この後のスクリプトの実行で、LINEへ通知したメールのラベルを削除するフローがあります。LINE通知後もアラートメールのラベルにメールを振り分けたままにしたい場合は、このまま管理用のラベルを作成します。
ラベルの中でフィルタを作成すれば、先ほど作成したラベルが検索条件に追加されているので、そのまま「フィルタを作成」をクリックして作成します。
ラベル名「LINE Notice」を作成して設定します。ラベル名は後でスクリプトで指定するラベル名と合っていれば任意の名前で構いません。
※下線のチェック項目は必ず外してください。ここで過去のメールにフィルタを適用してラベルを付けてしまうと、初回のLINE通知でこれまでGmailで受信したアラートメールが一斉に送信されます。
これでGmailの設定は完了しました。
4. Google Apps Scriptでプロジェクトを作成する
Google Apps Scriptにアクセスし、新しいプロジェクトを作成します。
プロジェクト名は任意で変更してください。コードには次のスクリプトを貼り付けます。
<スクリプト>
token にLINE Notifyで発行したトークンを指定してください。
※ラベル名「LINE Notice」から変更した場合は、変更後の管理用のラベル名を指定します。
function sendLineNotification() {
// 特定のラベルの付いたメールを取得
const label = GmailApp.getUserLabelByName("LINE Notice"); // ラベルを指定
const threads = label.getThreads();
if (!label) {
Logger.log("ラベルが見つかりません: LINE Notice");
return;
}
// LINE NotifyのAPIエンドポイント
const url = "https://notify-api.line.me/api/notify";
const token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // 取得したLINE Notifyのトークンを指定
// ラベルの一致したスレッドのメッセージを取得
for (let i = 0; i < threads.length; i++) {
let messages = threads[i].getMessages();
// スレッド内の最新のメッセージ(メール)を取得※Gmailは同じ件名の場合はスレッドでまとめられる仕様
let latest_message = messages[messages.length - 1];
let subject = latest_message.getSubject();
let body = latest_message.getPlainBody();
// LINEに通知
let options = {
"method": "post",
"payload": {
"message": "Subject: " + subject + "\n\n" + body
},
"headers": {
"Authorization": "Bearer " + token,
"Content-Type": "application/x-www-form-urlencoded"
}
};
UrlFetchApp.fetch(url, options);
// ラベルを削除して重複通知を防止
threads[i].removeLabel(label);
}
}
プロジェクトを保存します。これでプロジェクトが作成できました。
5. トリガーを設定する
App Scriptから自分のプロジェクトに移動し、作成したプロジェクトのトリガーを設定します。
実行する関数にスクリプトの関数(sendLineNotification)が表示されています。
あとは任意のトリガーを設定して保存してください。
※この例では時間主導型のトリガーで15分おきに実行する設定としています。
以上でアラートメールをLINEに通知するためのすべての設定が完了しました。
6. テスト
では実際にLINEに通知できるかテストしてみましょう。
LiLz Gaugeアラートのフィルタで作成したラベルの中で、管理用のラベル「LINE Notify」を1つ付けてみます。
トリガーが発動したら、指定したLINEグループにLINE Notifyから通知が来ます。
先頭の下線部にはトークン発行時に指定したトークン名が表示されます。
Gmailを確認すると、LINE通知のスクリプトが実行された後でラベルが削除されています。
作成したLINEグループにメンバーを招待すれば、アラートを共有することができます。
また、フィルタの設定方法を変更すると、各計器のアラートを分類して共有したいメンバーだけに通知することが可能です。
ぜひ、色々と試してみてください!