PR
AI・プログラミング

PayPay決済通知をLINEで受け取る方法|Google Apps Script活用ガイド

はじめに

知人が無人販売を運営しており、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の管理画面から直接確認できるようになり、設定が大幅に簡素化されています。

https://notify-bot.line.me/closing-announce

システムの仕組み

PayPay決済が完了すると、以下の件名でメールが届きます: 「【PayPay】取引が完了しました」

  1. Gmail(Google Apps Script)でメール監視
  2. 対象メールを検知
  3. LINE Messaging APIでBot通知送信

LINE側の設定

Messaging APIチャネル作成

LINE Developersにアクセスし、個人アカウントでログインします。

https://developers.line.biz

目的に応じた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のページに行きます。

https://script.google.com/home

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

ソースコードは以下です。先ほど入手したアクセストークンと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());

  }

}

初回実行時に権限確認画面が表示されます:

  1. 「実行」ボタンをクリック
  2. 「怪しいアプリ」の警告が表示される
  3. 「Advanced」→「Go to “project”」をクリック
  4. 「Allow」で権限を許可

手動テスト

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

自動実行トリガーの設定

現在手動であったところを定期的に実行するようにします。

左側の時計マークを押して、トリガー追加を押します。

以下のように設定します:

  • 実行する関数: sendGmailToLine
  • イベントのソース: 時間主導型
  • 時間ベースのトリガー: 分
  • ベースのタイマー
  • 分の間隔: 10分おき

この設定により、10分間隔でメールチェックが実行され、PayPay決済完了メールがあれば自動的にLINE通知が送信されます。

まとめ

構築のポイント:

  • LINE Notifyサービス終了により、現在はMessaging API必須
  • User IDが管理画面から直接確認可能になり設定が簡素化
  • Google Apps Scriptの正規表現で決済金額を自動抽出

この仕組みを応用すれば、様々なメール通知をLINEで受け取るシステムが構築できます。無人販売以外にも、Webサイトのお問い合わせ通知や重要なシステムアラートなどにも活用可能です。

タイトルとURLをコピーしました