メールの「待ち」を自動化する — Gmail API × GitHub Actionsで特定メールを監視してLINE通知【2026】
「AdSenseの審査結果、いつ来るんだろう」——こういういつ届くか分からないメールを待つのは地味にストレスです。受信箱を何度も見に行くのも非効率。そこで、Gmail APIで特定のメールを毎日自動チェックし、来たらLINEに通知する仕組みをGitHub Actionsで作りました。AdSenseに限らず、ASPの提携可否や各種審査の通知にも応用できます。
全体像
毎日 決まった時刻(GitHub Actions・定期実行)
1. Gmail API で対象メールを検索(送信元・期間で絞り込み)
2. 該当があれば件名・差出人・要約を取り出す
3. LINEに通知(来ていない日は何もしない)
↓
人は通知を見て、次の行動を判断する
PCを閉じていても、GitHubのサーバー側で動くので「放置で監視」が成立します。
ステップ1:Gmail読み取り用のトークンを用意する
Gmail APIを使うには、gmail.readonly スコープのOAuthトークンが必要です。すでに別用途(Search Console等)でOAuthクライアントを持っているなら、それを再利用して同意フローをやり直すだけで済みます。
- ローカルで一度だけブラウザ同意フローを実行し、リフレッシュトークンを取得
- 取得した
client_id/client_secret/refresh_tokenを GitHub Secrets に保存 - CIでは環境変数から認証(ブラウザ操作は不要)
つまずきポイント:Google Cloudプロジェクトで Gmail APIを有効化していないと、
accessNotConfigured(403)で弾かれます。gcloud services enable gmail.googleapis.comなどで有効化してから再実行してください。
ステップ2:対象メールを検索する
Gmailの検索クエリで、送信元と期間を絞り込みます。AdSenseなら送信元(adsense-noreply@google.com)や本文キーワード、ASPなら各社のドメインを指定します。
検索でヒットしたメッセージの差出人・件名・冒頭を取り出し、想定した送信元かどうかを確認してから通知に回します。マーケティングメールまで拾わないよう、送信元や件名(「承認」「審査」など)でフィルタするのがコツです。
ステップ3:GitHub Actionsで毎日実行+通知
スケジュール起動のワークフローを用意し、スクリプトを毎日走らせます。該当メールがあればLINEのプッシュ通知を送り、なければ静かに終了します(「まだ来ていません」を毎日送ると通知疲れするため)。
on:
schedule:
- cron: '17 23 * * *' # 毎日 朝の時間帯に実行
workflow_dispatch:
LINEのチャンネルアクセストークンと送信先IDもSecretsに入れておけば、デプロイ失敗通知など他の用途と同じ仕組みを使い回せます。
重複通知を防ぐ
同じメールを毎日通知しないよう、通知済みのメッセージIDを保持します。GitHub Actionsのキャッシュに小さな状態ファイルを置く方法なら、リポジトリにコミットを増やさずに重複を防げます。一過性の監視用途であれば、検索期間を直近数日に絞るだけでも実用上は十分です。
なぜ「通知まで」で止めるのか
技術的には、承認されたら次の自動処理まで走らせることもできます。それでも検知と通知までにとどめたのは、承認/却下で次の行動が変わり、判断を伴うからです。
- 承認 → 次の設定・実装に進む
- 却下 → 理由を読んで対応する
判断が必要な部分は人が担い、機械は「見張りと通知」に徹する。この切り分けが、シンプルで壊れにくい自動化になります。
まとめ
- 「いつ来るか分からないメール」は Gmail API × GitHub Actions で監視できる
- PCを閉じても動く(サーバー側実行)ので、放置で成立する
- Gmail APIの有効化忘れ(403)に注意
- マーケメールを拾わないよう送信元・件名でフィルタ
- 「検知・通知は自動、判断・実行は人」の切り分けが安全
審査待ちのソワソワを、仕組みに肩代わりさせましょう。
※ 本記事は当方の実運用での構築をもとにした技術メモです。具体的なトークン・ID・プロジェクト情報は伏せています。
関連記事: SEO内部リンク改善をGitHub Actionsで週次自動化する — 同じGitHub Actions定期実行の仕組みをSEO改善に応用した実例