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();
}
}
}
おわり

注文が入ると上記のような通知が来ます。やったね。