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の新着メールをLINE公式Botで通知する方法【GAS × Messaging API】

Last updated at Posted at 2025-06-20

こんにちは。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と自分(通知対象ユーザー)を友だちにする

  1. チャネル設定ページの「QRコード」から、Botを友だち追加
  2. さらに、通知先のユーザー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への移行を!
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?