このリポジトリは、Gmailで特定のラベルが付いた未読メールを検出し、受信時にLINEへ通知を送るGoogle Apps Scriptです。
概要
- Gmailの特定ラベル(かつ未読)を定期チェックして、該当メールがあればLINEへ通知します。
main.gsにLINEのトークンや通知先のユーザーID、チェックしたいラベルを記載します。
設定手順(要約)
main.gsを編集して、以下の値を設定します。
const CHANNEL_ACCESS_TOKEN = 'あなたのチャネルアクセストークン(長期)';
const USER_ID = '通知先のユーザーID(Uから始まるIDなど)';
const TARGET_LABELS = ['確認したいラベル名1','ラベル名2'];-
スクリプトの実行権限を承認します。
- スクリプトエディタで初回実行すると、Gmailと外部通信(UrlFetchApp)へのアクセス許可を求められます。許可してください。
-
トリガーを設定します(自動実行)。
- Apps Script エディタの「トリガー」(Triggers) を開き、関数に
notifyLabelledMailを選択して、時間主導(Time-driven)で定期実行するトリガーを追加してください。 - トリガー設定の例は
docs/trigger.pngを参照してください(実行間隔は用途に合わせて調整してOK)。
- Apps Script エディタの「トリガー」(Triggers) を開き、関数に
-
Gmail側でラベルを自動付与するには、Gmail の「フィルタとブロック中のアドレス」からフィルタを作成し、該当条件に対してラベルを適用するよう設定してください。
動作のポイント
- メール本文はプレーンテキストを参照しており、現在はCELSのシステムに合わせて「内容:」というキーワード以前を切り詰める実装になっています(該当箇所は
main.gs内のkeyword = "内容:"の検索とsubstring部分です)。 - 必要であれば本文の切り出し方法(長さやキーワード)を変更してください。
- 通知送信後、該当メッセージは
msg.markRead()により既読にされます。重複通知を避けるための仕様です。
トラブルシュート
- LINE側の
CHANNEL_ACCESS_TOKENはMessaging APIの「チャネルアクセストークン(長期)」を使用してください。 USER_IDはプッシュ送信先のユーザーIDです。正しいIDであることを確認してください。- スクリプト実行時に権限エラーが出た場合は、Apps Script の実行ログと権限画面を確認してください。
docs/trigger.pngにトリガー設定のスクリーンショットを置いてあります。設定の参考にしてください。- ラベルはGmailの設定で自動付与できます。手動でラベルを付けても動作します。