はじめに
知人が無人販売を運営しており、PayPay決済の通知をLINEで受け取りたいという相談を受けました。在庫管理のため、売上があった際にリアルタイムで通知を受けたいとのことでした。
ShopifyなどのECプラットフォームには標準機能がありますが、PayPay Business単体では通知APIが提供されていません。そこで、Gmailに届く決済完了メールをトリガーとして、LINEに自動通知するシステムを構築することにしました。
この記事で学べること:
- LINE Messaging APIの設定方法(最新版)
- Google Apps Scriptを使ったメール監視システム
- PayPay決済完了メールからの金額自動抽出
重要な変更点:LINE Notifyサービス終了について
従来多く使用されていた「LINE Notify」は2025年3月末でサービス終了となりました。現在は「Messaging API」を使用する必要があります。
また、以前はBot用のUser IDを取得するために専用スクリプトを作成する必要がありましたが、現在はLINE Developersの管理画面から直接確認できるようになり、設定が大幅に簡素化されています。

システムの仕組み
PayPay決済が完了すると、以下の件名でメールが届きます: 「【PayPay】取引が完了しました」
- Gmail(Google Apps Script)でメール監視
- 対象メールを検知
- LINE Messaging APIでBot通知送信

LINE側の設定
Messaging APIチャネル作成
LINE Developersにアクセスし、個人アカウントでログインします。
目的に応じたProvider名を設定してCreateします。 例: 「無人販売通知システム」

「Create a Messaging API channel」を選択

「Create A LINE Official Account」を選択

Bot用のユーザー情報を入力して作成

必要な情報を取得
そうするとMessaging API用のチャネルができているので、それをもとに情報を拾っていきます。
① User ID(Uから始まるID)
- Basic Settingsタブの下部にある「Your user ID」をコピー

② Channel Access Token
- Messaging APIタブの下部で「Issue」ボタンをクリックして発行
- 発行されたトークンをコピー

Botを友達追加
Messaging APIタブにあるQRコードを読み取り、作成したBotを友達に追加しておきます。

Google Apps Script側の設定手順
Apps Scriptプロジェクト作成
メールを受けているGmailのアカウントからApps Scriptのページに行きます。

新しいプロジェクトを選択します。

ソースコードは以下です。先ほど入手したアクセストークンとIDを貼り付けしてください。
件名と決済金額部分だけを通知するようにしています。
//============== 完成版のコード ==================
function sendGmailToLine() {
// ▼▼▼【重要】ここから3箇所を設定してください ▼▼▼
// 1. LINE Developersの「Messaging API」タブにある「チャネルアクセストークン」を貼り付け
const CHANNEL_ACCESS_TOKEN = ‘あなたのアクセストークン’;
// 2. LINE Developersの「Basic settings」タブにあった、あなたの「Your user ID」を貼り付け
const USER_ID = ‘あなたのID’;
// 3. 検索したいGmailの条件を指定 (例: ‘subject:(重要) is:unread’)
const SEARCH_QUERY = ‘subject:(“【PayPay】取引が完了しました”) is:unread’;
// ▲▲▲ 設定はここまでです ▲▲▲
// — ここから下は変更不要 —
try {
const threads = GmailApp.search(SEARCH_QUERY);
if (threads.length > 0) {
threads.forEach(thread => {
const message = thread.getMessages()[0];
const subject = message.getSubject();
// — ここからが変更箇所 —
// 1. メールの本文を取得
const body = message.getPlainBody();
// 2. 「〇〇円」という形式の文字列を正規表現で探す
const amountRegex = /(\d[\d,]*)円/;
const match = body.match(amountRegex);
// 3. マッチした部分から金額を取得(見つからなければ「金額不明」とする)
let amount = ‘金額不明’;
if (match) {
amount = match[0]; // 例: “100円” や “1,500円” のように取得
}
// 4. LINEに送るメッセージを組み立てる
const lineMessage = `件名: ${subject}\n金額: ${amount}`;
// — 変更箇所ここまで —
const payload = {
‘to’: USER_ID,
‘messages’: [{‘type’: ‘text’, ‘text’: lineMessage}] // 組み立てたメッセージを送る
};
const options = {
‘method’: ‘post’,
‘contentType’: ‘application/json’,
‘headers’: {‘Authorization’: ‘Bearer ‘ + CHANNEL_ACCESS_TOKEN},
‘payload’: JSON.stringify(payload)
};
UrlFetchApp.fetch(‘https://api.line.me/v2/bot/message/push’, options);
thread.markRead();
});
}
} catch (e) {
console.error(‘エラーが発生しました: ‘ + e.toString());
}
}
初回実行時に権限確認画面が表示されます:
- 「実行」ボタンをクリック
- 「怪しいアプリ」の警告が表示される
- 「Advanced」→「Go to “project”」をクリック
- 「Allow」で権限を許可

手動テスト
テスト用に件名「【PayPay】取引が完了しました」のメールを自分宛に送信し、再度「実行」ボタンを押してBotに通知が届くか確認してください。以下のような感じで通知されます。

自動実行トリガーの設定
現在手動であったところを定期的に実行するようにします。
左側の時計マークを押して、トリガー追加を押します。

以下のように設定します:
- 実行する関数: sendGmailToLine
- イベントのソース: 時間主導型
- 時間ベースのトリガー: 分
- ベースのタイマー
- 分の間隔: 10分おき

この設定により、10分間隔でメールチェックが実行され、PayPay決済完了メールがあれば自動的にLINE通知が送信されます。
まとめ
構築のポイント:
- LINE Notifyサービス終了により、現在はMessaging API必須
- User IDが管理画面から直接確認可能になり設定が簡素化
- Google Apps Scriptの正規表現で決済金額を自動抽出
この仕組みを応用すれば、様々なメール通知をLINEで受け取るシステムが構築できます。無人販売以外にも、Webサイトのお問い合わせ通知や重要なシステムアラートなどにも活用可能です。