function doPost(e) { var replyToken= JSON.parse(e.postData.contents).events[0].replyToken; if (typeof replyToken === 'undefined') { return; } var url = 'https://api.line.me/v2/bot/message/reply'; var channelToken = 'ここにご自分のアクセストークンを貼り付ける'; var event = JSON.parse(e.postData.contents).events[0]; //日付け時刻の取得 var date = new Date(); var month = date.getMonth() + 1; var day = date.getDate(); var dateMsg = month + '月' + day +'日'; var hournow = date.getHours(); // ユーザーのメッセージを取得 var mess2 =''; var mess1 = ''; var reply =''; var userMessage = event.message.text; var odrNum = userMessage; var user_id = event.source.userId; var nickname = getUserProfile(user_id); //スプレッドシートから設定を取得 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = spreadsheet.getActiveSheet(); var range = sheet.getRange(1,4,1,6); var count = range.getValues(); var number = count[0][4]; var pass = count[0][0]; var limit = count[0][1]; var adminName = count[0][3]; var timelim = count[0][5]; var holiday = count[0][2]; if (holiday === 0){ var order = '4';} else { var order = odrNum.slice(0,1);; } //管理者メニュー if(odrNum==pass||adminName==nickname){ var mess1 = nickname + '様\n管理者でログインしています。\n'; var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = spreadsheet.getActiveSheet();   sheet.getRange(1, 7).setValue(nickname); var range = sheet.getRange(1,1,number,3); var value = range.getValues(); var cnt = 0; switch (odrNum) {  case '6': sheet.getRange(1, 6).setValue(0); mess2 = mess2 + '予約不可に設定しました。\n'; break; case '7': sheet.getRange(1, 6).setValue(1); mess2 = mess2 + '予約可能に設定しました。\n'; break; case '8': 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++){ sheet.getRange(i+1,2).clear(); } mess2 = mess2 + '予約をすべて削除しました。\n'; break; case '9': mess2 = mess2 + 'ログアウトしました。\n'; sheet.getRange(1, 7).setValue(''); break;  default: mess2 = mess2 + '予約確認をします。\n'; for(let i = 0; i <= (number-1); i++){ if(value[i][1]){ mess2 = mess2 +value[i][0] + ' に' + value[i][1] + '様の予約があります。\n'; cnt++; } } break; } if (count[0][2] === 0){ var mess3 = '予約できない設定です\n';}else{ mess3 = '予約出来る設定です\n';} mess2 = mess2 + '予約' + cnt + '件です。\n' + mess3 +'\n管理者メニューです\n 6 予約不可(休日処理)\n 7 予約可\n 8 すべての予約を削除(終了処理)\n 9 管理者からログアウト\n 予約確認のみは、その他のキー\n';     } else { //お客様メニュー switch (order) {  case '1': var reply = dateMsg + 'の予約を受け付けます\n'; var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = spreadsheet.getActiveSheet(); var range = sheet.getRange(1,1,number,3); var value = range.getValues(); var limCount = limit; for(let i = 0; i <= (number-1) ; i++){ var same = value[i][2]; var tttt = same - hournow - timelim; if(!value[i][1]&&tttt>=0){ mess2 = mess2 + value[i][0] + '予約可 予約番号 '+ (500+i) +'\n'; limCount--; if(limCount==0){ break; } } } mess2 = mess2 + '\n予約はまだ完了していません。\n予約番号送信後、必ず返信をご確認ください\n'; break;  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(); } } mess2 = mess2 + '\n 1ご予約 2キャンセル 3予約確認 \n 番号のみ返信してください。\n';   break;  case '3': 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'; } } mess2 = mess2 + '\n 1ご予約 2キャンセル 3予約確認 \n 番号のみ返信してください。\n'; break; case '4': // var reply = '休日処理'; mess2 = mess2 + '本日は定休日、または予約を停止しています。\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); break; } else { mess2 = mess2 + value[yoyaku][0] + 'は予約出来ませんでした。\n\n 1ご予約 2キャンセル 3予約確認 \n 番号のみ返信してください。\n'; break; }  default: var reply = '番号が認識できませんでした。番号を確認し、もう一度お試しください。\n\n 1ご予約 2キャンセル 3予約確認 \n 番号のみ返信してください。\n' ; // if(odrNum==pass||adminName==nickname){reply='';}   break; } var mess1 = mess1 + reply ; } var messages = [{ 'type': 'text', 'text': mess1 + mess2 , }]; UrlFetchApp.fetch(url, { 'headers': { 'Content-Type': 'application/json; charset=UTF-8', 'Authorization': 'Bearer ' + channelToken, }, 'method': 'post', 'payload': JSON.stringify({ 'replyToken': replyToken, 'messages': messages, }), }); return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON); } function doGet() { return; // HtmlService.createHtmlOutputFromFile('index'); } function getUserProfile(user_id){ var channelToken = 'ここにご自分のアクセストークンを貼り付ける'; var url_2 = 'https://api.line.me/v2/bot/profile/' + user_id; var userProfile_2 = UrlFetchApp.fetch(url_2,{ 'headers': { 'Authorization' : 'Bearer ' + channelToken, }, }) return JSON.parse(userProfile_2).displayName; //return; }