BOOTH通販の注文が入ったらLINE通知を受け取る
BOOTH通販を始めてみたのですがあまりメールを見ないため、LINE通知が来るようにしてみました。
前提としてBOOTHからのメールはGmailで受信する必要があります。
仕組みとしては新規注文メールが受信されたらGmail側で自動でboothラベルを付け、Google Apps Scriptにて一定時間ごとに監視し、boothラベルの中に未読のメールがあればLINE通知を送信してメールを既読にします。
Gmailの設定
フィルタ機能を使ってBOOTHから注文完了メールが来たら自動でbooth
タグが付くように設定します。
受信するアカウントのGmailを開いて先にbooth
ラベルを新規作成しておきます。
右上の設定(⚙️)ボタン→すべての設定を表示→「フィルタとブロック中のアドレス」タブ→「新しいフィルタを作成」で新規フィルタを作成します。
From
に「*@booth.pm」、含む
に「商品が購入されました」を入力して「続行」、「ラベルを付ける」を選択してbooth
ラベルを選択します。
これで新規注文メールが入ったら自動でboothラベルが付くようになります。
LINEの設定
LINE通知を受け取る方法は2種類あります。
LINE Notifyを使用する方法とLINE Messaging APIを使用する方法です。自分は元々Misskeyやブログのデーターベースのバックアップエラーの通知のためbotを作成しているので後者を使用していますが、前者の方が楽かもです。
LINE Notifyを使用する場合
LINE Notify
という公式アカウントから通知を受信する方法です。
LINE側の設定
自分のLINEアカウントから先にLINEアカウントでグループを作成しておきます。名前はBOOTHなど適当に。
LINE Notify公式サイトにアクセスし、右上のログインからログインします。QRコードログインが楽です。
マイページにアクセスし、「アクセストークンの発行(開発者向け)」から「トークンを発行する」を押してトークンを発行します。トークン名は任意です。グループは先ほど作成したグループを指定します。
Google Apps Scriptの設定
Gmailと同じアカウントでGoogle Driveにアクセスします。左上の+新規ボタンからその他→Google Apps Scriptを選択します。コードを書く画面に最初から入力してあるコードはすべて消して下記を貼り付けます。
ACCESS_TOKEN
の“内の部分を先ほどLINEで取得したトークンに置き換えて下さい。
function sendLineNotification() { var ACCESS_TOKEN = 'ここに取得したトークン'; // 'booth' ラベルがついた未読メールを検索 var threads = GmailApp.search('label:booth is:unread'); if (threads.length > 0) { // 未読メールがあればLINEに通知 var message = '✅BOOTHに注文が入りました'; // LINE Notifyで通知 var options = { 'method' : 'post', 'payload' : 'message=' + message, 'headers' : {'Authorization' : 'Bearer ' + ACCESS_TOKEN}, 'muteHttpExceptions': true }; UrlFetchApp.fetch('https://notify-api.line.me/api/notify', options); // すべての未読メールを既読に for (var i = 0; i < threads.length; i++) { threads[i].markRead(); } } }
次に左側のトリガー(⏱)ボタンを押して右下の「トリガーを追加」、「実行する関数を選択」で「sendLineNotification」を選び、「時間主導型」「時間ベースのタイマー」にして任意の時間間隔を設定します。あまり頻繁に受信する必要がなければ数時間おきでOKだと思います。LINEもGASも無料だと上限があるので4時間程度~半日とかでもいいかも。
保存ボタンを押すとポップアップが出ると思うので「Choose an account」で自分のアカウントを選択、「Advanced(詳細)」→「Go to …(unsafe)」を押し、
下にスクロールして「Allow(承認)」を押します。GASは色々出来ちゃうのでセキュリティの確認ですね。
これで設定完了です。
あとは設定した時間間隔でスクリプトが実行され、booth
ラベルのついた未読メールがあれば通知してくれます。
適当な未読メールににboothラベルを付けて、Google Apps Scriptのコード画面上の「実行」を押してテストしてみると良いです。
LINE Messaging APIの場合
自分用のbotとしてアイコンなども好きにしたい場合こちらが便利です。自分はこちらを使用しています。
LINE Messaging APIから登録します。詳しいことは省きますがチャネルアクセストークンを発行して、ユーザーIDはメモしておきます。
Google Apps Scriptの設定
コード以外はLINE Notifyと同様です。
function sendLineNotification() { var CHANNEL_ACCESS_TOKEN = 'チャネルアクセストークン'; var USER_ID = 'ユーザーID'; // 'booth' ラベルがついた未読メールを検索 var threads = GmailApp.search('label:booth is:unread'); if (threads.length > 0) { // 未読メールがあればLINEに通知 var message = '✅BOOTHに注文が入りました'; // LINE Messaging API var postData = { "to": USER_ID, "messages": [ { "type": "text", "text": message } ] }; var options = { "method": "post", "contentType": "application/json", "headers": { "Authorization": "Bearer " + CHANNEL_ACCESS_TOKEN }, "payload": JSON.stringify(postData), "muteHttpExceptions": true }; var response = UrlFetchApp.fetch("https://api.line.me/v2/bot/message/push", options); console.log(response.getContentText()); // すべての未読メールを既読に for (var i = 0; i < threads.length; i++) { threads[i].markRead(); } } }
おわり
注文が入ると上記のような通知が来ます。やったね。