こんにちは。tampopo256です。
普段は教育系のWebサービスを作ったりしています。
LINE Notify終了のため、月200件以上の通知は無料では送信できません...
SlackやDiscordに通知を飛ばすことをお勧めします。
はじめに ~「あれ、LINEに通知が来ない?」~
2024年3月某日。
個人のメールをLINEに転送していたところ...
調べてみたところ、まさかの事実が判明。
LINE Notifyが2024年3月で終了していた。
LINE Notifyを使っていた自動通知の仕組みはすべて停止。
でも「GmailをLINEに通知したい」というニーズは変わらない──。
今回は、LINE Notifyの後継としてLINE公式Bot(Messaging API)を使い、GASからGmail通知をLINEに送る方法をまとめます。
背景と前提
やりたいこと
- Gmailで特定の条件に合うメール(例:未読、特定アドレス)を受信
- その内容をLINEに自動通知
- 通知は個人LINEでも、チームグループでも可
使う技術
- Google Apps Script(Gmail監視スクリプト)
- LINE Messaging API(Bot作成とPush通知)
- Webhookは使わずGASからPush APIで送信
ステップ① LINE Botアカウントの作成
1. LINE Developersに登録・ログイン
https://developers.line.biz/console
2. プロバイダーを作成
- 名前は何でもOK(例:
通知Bot
)
3. チャネルを作成(Messaging API)
- チャネルタイプ:Messaging API
- Webhookは一旦OFFでOK
- 作成後、「チャネルアクセストークン(長期)」をコピー
→ これがGASからの認証に必要
ステップ② Botと自分(通知対象ユーザー)を友だちにする
- チャネル設定ページの「QRコード」から、Botを友だち追加
- さらに、通知先のユーザーIDを取得する必要があります
ステップ③ GASでユーザーIDを取得する(1回限り)
GASに一時的にWebhookを作成して、LINEから受信した内容をログ出力:
function doPost(e) {
const json = JSON.parse(e.postData.contents);
const userId = json.events[0].source.userId;
Logger.log('User ID: ' + userId);
return ContentService.createTextOutput('OK');
}
GASをデプロイ → Webhook URLに設定 → Botに「こんにちは」と話しかける → userId
がログに出力されます。
ステップ④ Gmail通知スクリプトを作成する
const LINE_ACCESS_TOKEN = 'チャネルアクセストークン';
const TO_USER_ID = '取得したユーザーID';
function notifyNewGmail() {
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, 100);
const text = `📩 Gmail新着\nFrom: ${from}\nSubject: ${subject}\n---\n${body}`;
sendLineMessage(text);
message.markRead(); // 通知済みマーク
}
}
}
function sendLineMessage(text) {
const url = 'https://api.line.me/v2/bot/message/push';
const payload = {
to: TO_USER_ID,
messages: [{ type: 'text', text }],
};
const options = {
method: 'post',
contentType: 'application/json',
headers: {
Authorization: `Bearer ${LINE_ACCESS_TOKEN}`,
},
payload: JSON.stringify(payload),
};
UrlFetchApp.fetch(url, options);
}
ステップ⑤ 定期実行トリガーを設定する
GASのメニューから「トリガー」 → notifyNewGmail()
を5分ごとに設定すれば完了。
実運用して感じたこと
- ✅ LINE Notifyより自由度が高く、通知の内容や送信先も自在
- ❗ Messaging APIは無料枠(月200通)を超えると送信不可
- ❗ 通知相手はBotと「友だち」でないと通知不可
- 💡 BotをチームLINEグループに招待すれば、複数人通知も可能
まとめ
- LINE Notifyは2024年3月に完全終了済み。もう使えません
- Gmail通知をLINEに送るには、Messaging APIのPush機能が現実解
- GASとの連携で、ノーサーバー・無料枠運用が可能
- 早めにLINE Botへの移行を!