Gmailで特定のものをLINEで通知

こちらも参考になるかと

sp7pc.com

 

子どもの登下校を見守る「ミマモルメ」のメールが来たり、

習い事の連絡メールが来たときはLINEで通知をしてほしい。

今まではiftttでできていたのだけど、悲しいことに連携の停止を発表。

Google Apps Scriptでやれってことなんでしょう。

 

重い腰を上げて設定してみました。

 

通知したいメールはフィルタでラベルを付けるように設定しておく

Webサービスからの通知をLINEで受信できるように設定をする

notify-bot.line.me

 

LINEで歯車(設定)⇒アカウントで作成したアカウントでログイン。

マイページへ進む。

トークンを発行する」⇒トークン名を入力し通知先を選んで「発行する」

 

トークンが発行されたら利用してGoogle Apps Scriptでスクリプトを作成

accounts.google.com

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

https://tonari-it.com/google-apps-script-manual/

https://jijyoron.hatenablog.com/entry/2019/01/15/220800