2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Gmailの新着メールをDiscordに通知してみた【GAS × Discord Webhook】~LINE Notify終了からの乗り換え〜

Last updated at Posted at 2025-06-20

こんにちは。tampopo256です。
普段は教育系のWebサービスを作ったりしています。

はじめに ~プライベートGmail × LINE Notify依存民の悲劇~

個人のGmailアカウントで、Amazonの配送通知や家族・サークル関連の連絡をLINEで通知していたのですが──

2024年3月、ついにこの瞬間が訪れました。

LINE Notify サービス終了

地味に愛用していたのに……。
「新着メールがLINEに飛ばなくなったけど何で!?」と気づいた時のショックたるや。

とはいえ、LINEに代わる通知先が必要です。
LINEよりよく使うチャットアプリ、それが「Discord」でした。

というわけで今回は、Google Apps Script(GAS)を使って、Gmailの新着メールをDiscordに通知する方法を紹介します。


何としても引き続きLINEに通知したい方はこちらをご覧ください。
月200通までの制限があるため、件数が少ない方お勧めです。

背景と前提

📌 目的

  • プライベートGmailの通知(家族、ネット通販、イベントなど)をLINEの代わりにDiscordへ
  • 通知を逃したくないけど、アプリを増やしたくもない
  • GASとWebhookだけでサーバーレスに実現したい

🛠 使用技術

  • Google Apps Script(Gmailチェック&通知送信)
  • Discord Webhook(チャンネルへの通知)

🔑 前提

  • Discordサーバーと通知チャンネルを持っている
  • Webhookを発行できる権限がある

ステップ① Discord Webhookの作成

  1. Discordの通知したいチャンネルを開く
  2. 歯車(チャンネル編集)→「連携サービス」→「Webhookを作成」
  3. 任意の名前とアイコンを設定
  4. Webhook URLをコピーしておく(例:https://discord.com/api/webhooks/...

ステップ② GASで通知スクリプトを作る

Googleドライブから「スクリプトファイルを作成」して以下を記述:

const DISCORD_WEBHOOK_URL = 'https://discord.com/api/webhooks/xxxx/yyyy'; // 取得したWebhook URLに置き換え

function notifyNewEmailsToDiscord() {
  const threads = GmailApp.search('is:unread newer_than:10m');
  
  for (const thread of threads) {
    const messages = thread.getMessages();
    
    for (const message of messages) {
      if (!message.isUnread()) continue;
      
      const subject = message.getSubject();
      const from = message.getFrom();
      const body = message.getPlainBody().slice(0, 200); // 本文冒頭だけ

      const content = `📩 **新着メール**\nFrom: ${from}\nSubject: ${subject}\n\n${body}`;
      sendDiscordWebhook(content);

      message.markRead(); // 通知済みとして既読に
    }
  }
}

function sendDiscordWebhook(message) {
  const payload = { content: message };

  const options = {
    method: 'post',
    contentType: 'application/json',
    payload: JSON.stringify(payload),
  };

  UrlFetchApp.fetch(DISCORD_WEBHOOK_URL, options);
}

ステップ③ トリガーで定期実行を設定

  1. GASエディタ画面 → 左メニュー「時計マーク」(トリガー)をクリック
  2. notifyNewEmailsToDiscord を選び、5〜10分ごとの「時間主導型トリガー」に設定

実際に使ってみての感想

✅ よかった点

  • Discordに通知を集約できて便利
  • GASだけで動くので、無料でメンテ不要
  • LINE Notifyよりメッセージ構造を自由に書ける

❗ 注意点

  • Gmailの無料アカウントはAPI制限がある(数百回/日)
  • Discordの1投稿は2000文字以内に制限されている
  • 通知が多すぎるとDiscordチャンネルが荒れる(件数制御を推奨)

まとめ

  • LINE Notify終了後も、GAS × Discord Webhookで代替可能
  • 個人メール通知用途でも十分実用的
  • DiscordはSlackやLINEより通知専用Botの導入が気軽
  • GAS + Discord = ノーサーバー通知のベスト組み合わせ
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?