Gmailで特定のものをLINEで通知
こちらも参考になるかと
子どもの登下校を見守る「ミマモルメ」のメールが来たり、
習い事の連絡メールが来たときはLINEで通知をしてほしい。
今まではiftttでできていたのだけど、悲しいことに連携の停止を発表。
Google Apps Scriptでやれってことなんでしょう。
重い腰を上げて設定してみました。
- 通知したいメールはフィルタでラベルを付けるように設定しておく
- Webサービスからの通知をLINEで受信できるように設定をする
- トークンが発行されたら利用してGoogle Apps Scriptでスクリプトを作成
- スプレッドシートを新規作成し、アクセス許可をもらう
- Scriptのを以下に変更~トリガの設定
通知したいメールはフィルタでラベルを付けるように設定しておく
Webサービスからの通知をLINEで受信できるように設定をする
LINEで歯車(設定)⇒アカウントで作成したアカウントでログイン。
マイページへ進む。
「トークンを発行する」⇒トークン名を入力し通知先を選んで「発行する」
トークンが発行されたら利用してGoogle Apps Scriptでスクリプトを作成
Googleドライブで、Google Apps Scriptに接続
マイドライブ⇒その他⇒Google Apps Script(ない場合は、追加)
スプレッドシートを新規作成し、アクセス許可をもらう
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
sheet.appendRow(['hello', 'world']);
}
実行ボタンを押すと許可を求められるので、自分のアカウントで許可
「許可を確認」⇒自分のアカウントを選択⇒「詳細」⇒○○(安全ではないページに移動)⇒「許可」
Scriptのを以下に変更~トリガの設定
・スプレッドシートのURL
・ラベル名
・LINENotifyトークン
function myFunction() {
// スプレッドシート検索
var spreadsheet = SpreadsheetApp.openByUrl('スプレッドシートのURL');
var sheet = spreadsheet.getSheetByName("シート1");
var lastrow = sheet.getLastRow();
Logger.log(lastrow);
// 登録済スレッドID一覧取得
var range = "";
if (lastrow > 0){
range = sheet.getRange(1, 1, lastrow).getValues();
}
// メール検索 「テスト」ラベルの中から
var query = 'label:テスト';
var threads = GmailApp.search(query, 0, 3);
// 存在しない場合
if(exists.length == 0){
// LINE通知
sendHttpPost(thread.getFirstMessageSubject());
// スプレッドシート追記
lastrow = sheet.getLastRow();
sheet.getRange(lastrow +1, 1).setValue(thread.getId());
}
});
}function sendHttpPost(message){
var token = "トークン";
var options =
{
"method" : "post",
"payload" : "message=" + message,
"headers" : {"Authorization" : "Bearer "+ token}};
UrlFetchApp.fetch("https://notify-api.line.me/api/notify",options);
}
トリガーを設定して完了
編集⇒現在のプロジェクトのトリガー
時間の間隔を設定(○分おき等に)⇒「保存」
【参考】
https://mikan.lunarscape.net/2018/10/report-cardinfo.html