皆さんお久しぶりです!2ヶ月ぶりのブログ更新となります。最近、iPhone16 Proを購入し、写真をひたすら撮りまくっています。それ以外にも、私が運営しているコミュニティ「TechBull」で、8月にTechブログを公開しました。おかげさまで運営チームも拡大し、とても盛り上がっているところです!
発注だ!!スマホケースの裏に入れてもかわいいんだなこれが👀 https://t.co/PNqVvDZHr4 pic.twitter.com/UcaFJv1rzQ
— adachin👾SRE (@adachin0817) October 12, 2024
さて、本題に入りますが、私は個人のメールにGmailを利用しているのですが、時々大事なメールを見逃してしまうことがありました。そこで、LINEに通知が来るように設定しています。実は、5年前にGoogle Apps Script(GAS)とLINE Notifyを使ってこの仕組みを実装し、それ以来ずっと愛用しています。
ところが!!なんとLINE Notifyが2025年3月31日でサービスを終了するとのことです。(急な告知にビビりました…)しかし、代替としてLINE Messaging APIを利用すれば問題ないとのことだったので、無事に移行できました。今回はその移行方法についてブログにまとめたいと思います。
https://notify-bot.line.me/closing-announce
https://t.co/gv3vBQBHud
うそだろ!!!!!!!!> LINE Notify提供終了のお知らせ
— adachin👾SRE (@adachin0817) October 7, 2024
準備
- LINE Developerにフリープランで登録し、LINEアカウントでログイン
https://developers.line.biz/ja/
ちなみに月額利用料: 無料、メッセージ配信数(無料分): 1000通、追加メッセージ料金: 追加購入不可なので十分でしょう。
- プロバイダーを作成
https://developers.line.biz/console
- 新規チャネルを作成
- 対象のチャネルからMessaging API設定でチャネルアクセストークンを発行
- QAコードも読み込ませて公式友達として登録
GAS
https://script.google.com/home/start
- gmail-line.js
https://developers.google.com/apps-script/reference/gmail?hl=ja
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
const LINEBOT_CHANNEL_TOKEN = 'xxxxx'; //チャネルアクセストークン const GMAIL_QUERY = "is:unread label:hoge"; //Gmailのラベルを指定 const MAX_THREADS = 10; //10通まで function main() { const threads = GmailApp.search(GMAIL_QUERY, 0, MAX_THREADS); threads.forEach(thread => { const message = thread.getMessages().pop(); // 最新メッセージを取得 const messageBody = message.getPlainBody().substring(0, 500); // 本文の500文字まで取得 const formattedMessage = `[from]${message.getFrom()}\n` + `[date]${message.getDate().toLocaleString()}\n` + `[subject]${message.getSubject()}\n` + `[Message]${messageBody}\n`; pushMessageToLineBot(formattedMessage); message.markRead(); // メールを既読に }); } function pushMessageToLineBot(message) { const options = { "method": "post", "headers": { "Content-Type": "application/json", "Authorization": `Bearer ${LINEBOT_CHANNEL_TOKEN}` }, "payload": JSON.stringify({ "messages": [{ "type": "text", "text": message }] }) }; UrlFetchApp.fetch("https://api.line.me/v2/bot/message/broadcast", options); } |
LINEBOT_CHANNEL_TOKEN
はチャネルアクセストークンの指定と、 GMAIL_QUERY
はGmailのラベルを指定してください。 MAX_THREADS
ではGmailのAPI制限に引っかからないように10通までを上限としています。それと毎回Gmailでの未読メールを管理するのがめんどくさいため、LINEで通知されたら新着メールを既読するようにしました。
- トリガー
Exception: Request failed for https://api.line.me returned code 429. Truncated server response: {“message”:”You have reached your monthly limit.”} (use muteHttpExceptions option to examine full response)
at pushMessageToLineBot(gmail-line:37:15)
at [unknown function](gmail-line:18:5)
at main(gmail-line:8:11)
1時間に一回にしないとLINEのAPI制限に引っかかるので気をつけましょう。分単位で実行したい場合は課金するしかなさそう。
動作テスト
- 実行数
- テストメールを送る
Yeah!!!
まとめ
久しぶりにGASを書いている
— adachin👾SRE (@adachin0817) October 14, 2024
移行お疲れ様です!しかし、便利だな。LINEにGmailの通知が来ることで見逃しがなくなるので、皆さんも、ぜひ試してみてください!てかIFTTT→LINE Notify→LINE Messaging APIと2回も移行しているのか…もうサービス終了しないでくれ!w
0件のコメント