こんにちは。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の作成
- Discordの通知したいチャンネルを開く
- 歯車(チャンネル編集)→「連携サービス」→「Webhookを作成」
- 任意の名前とアイコンを設定
-
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);
}
ステップ③ トリガーで定期実行を設定
- GASエディタ画面 → 左メニュー「時計マーク」(トリガー)をクリック
-
notifyNewEmailsToDiscord
を選び、5〜10分ごとの「時間主導型トリガー」に設定
実際に使ってみての感想
✅ よかった点
- Discordに通知を集約できて便利
- GASだけで動くので、無料でメンテ不要
- LINE Notifyよりメッセージ構造を自由に書ける
❗ 注意点
- Gmailの無料アカウントはAPI制限がある(数百回/日)
- Discordの1投稿は2000文字以内に制限されている
- 通知が多すぎるとDiscordチャンネルが荒れる(件数制御を推奨)
まとめ
- LINE Notify終了後も、GAS × Discord Webhookで代替可能
- 個人メール通知用途でも十分実用的
- DiscordはSlackやLINEより通知専用Botの導入が気軽
- GAS + Discord = ノーサーバー通知のベスト組み合わせ