予約システムは、お客様と予約ロボットとのLINEメッセ―ジのやり取りです。直接見ることはできません。スプレッドシートを確認するか、常に予約のチェックをするしかありません。これでは忙しいときは大変です。予約やキャンセルがあったときに、管理者宛にLINE通知があれば便利です。
そこで予約・キャンセル時、管理者宛メッセージ配信する機能を追加しました。通常LINEは受け取ったメッセージに対して返信します。今回はメッセージを受け取ってない相手(管理者)宛にメッセージを送る機能(PUSH配信)を追加します。
メッセージを送るには、管理者のID(宛先ID)が必要になります。今まではこれを取得してませんでしたので、これを取得しスプレッドシートのセルに格納しておきます。今回はセル”G2”にIDを格納することにします。
追加スクリプト(管理者IDの格納)
//管理者メニュー
if(odrNum==pass||adminName==nickname){
var mess1 = nickname + '様\n管理者でログインしています。\n';
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();
sheet.getRange(1, 7).setValue(nickname);
sheet.getRange(2, 7).setValue(user_id);
var range = sheet.getRange(1,1,number,3);
var value = range.getValues();
var cnt = 0;
太字の部分を追加記述します。これで管理者のIDが格納されます。予約・キャンセルのメッセージをこのID 宛に配信します。
追加スクリプト(配信用のメッセージを作成)予約・キャンセルとも作成します。
キャンセルメッセージ
case '2':
var reply = '予約をキャンセルします。\n';
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();
var range = sheet.getRange(1,1,number,2);
var value = range.getValues();
for(let i = 0; i <= (number-1); i++){
if(value[i][1]==nickname){
mess2 = mess2 + value[i][0] + ' ' + value[i][1] + '様の予約をキャンセルしました。\n';
sheet.getRange(i+1,2).clear();
var pushmsg = value[i][0] + value[i][1] + '様の予約をキャンセルしました。';
pushMessage(pushmsg);
}
}
mess2 = mess2 + '\n 1ご予約 2キャンセル 3予約確認 \n 番号のみ返信してください。\n';
break;
太字部分を追加します。これが配信されるキャンセルメッセージです。
予約メッセージ
case '5':
var reply = nickname + '様、予約処理の結果です。\n';
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();
var range = sheet.getRange(1,1,number,3);
var value = range.getValues();
var yoyaku = odrNum - 500;
var same = value[yoyaku][2];
var tttt = same - hournow - timelim;
if(tttt>=0){
mess2 = mess2 + value[yoyaku][0] + 'でご予約承りました。\nどうもありがとうございました。\n 3 を送信すると予約確認ができます。\n';
sheet.getRange(yoyaku+1,2).setValue(nickname);
var pushmsg = value[yoyaku][0] + nickname + '様の予約があります。';
pushMessage(pushmsg);
break;
}
太字部分を追加します。これが配信される予約メッセージです。
メッセージ配信関数新規に記述します。名前はpushMessage()です。remessはメッセージ本文です。
function pushMessage(remess) {
//sheet指定済みの場合
// channelTokenはアクセストークンです。
var range = sheet.getRange(2, 7);//アクティブsheetの"G2"
var USER_ID = range.getValue();//ID取得
// console.log(USER_ID); //デバック用IDログ出力
var postData = {
"to": USER_ID,
"messages": [{
"type": "text",
"text": remess,
}]
};
var url = "https://api.line.me/v2/bot/message/push";
var headers = {
"Content-Type": "application/json",
'Authorization': 'Bearer ' + channelToken,
};
var options = {
"method": "post",
"headers": headers,
"payload": JSON.stringify(postData)
};
var response = UrlFetchApp.fetch(url, options);
}
これで管理者が予約・キャンセルの通知を受け取ることができます。