前置き:エラーが重なり読みにくく、自分自身も混乱してきてしまったので質問のし直しを行いました。
現在、LINE用のbotを作成しているのですが、if文で設定した語句を入力すると返信とクイックリプライが送られてくるというものを実装したいです。
しかし、SyntaxError: Unexpected token '}'(行 143、ファイル「コード.gs」)
という表示が起きてしまい、うまくいきません。
初心者なので分からない部分も多々ありますが、ご教授のほどよろしくお願いいたします。
JAVAscript
1var ACCESS_TOKEN = "XXXXXXX="; 2var URL = "https://api.line.me/v2/bot/message/reply"; 3var SS_ID = "XXXXXXXXX"; 4var PUSH = "https://api.line.me/v2/bot/message/push"; 5var REPLY = "https://api.line.me/v2/bot/message/reply"; 6var line_endpoint = 'https://api.line.me/v2/bot/message/reply'; 7var ID = '1CIyC69Mn7mCOgLpW2wObf_fVMDLD301kVYwTs4QsCKg/'; 8var HistorySheet = SpreadsheetApp.openById(SS_ID).getSheets()[0]; 9 10function doPost(e) { 11 var contents = e.postData.contents; 12 var obj = JSON.parse(contents); 13 var events = obj["events"]; 14 for (var i = 0; i < events.length; i++) { 15 if (events[i].type == "message" && events[i].message.type == "text") { 16 reply_message(events[i]); 17 } 18 } 19} 20 21function reply_message(e) { 22 var input_text = e.message.text; 23 var reply_text = ""; 24 const userId = e.source.userId; 25 const history = getLastUserHistory(userId); 26 27 if (history && history.continuous) { 28 if (history.text == "70%*2") { 29 reply_text = input_text + " の 軽減率70%×70%での実質HPは\n約 " + Math.floor(input_text / 0.09) + "です"; 30 } else if (history.text == "50%*2") { 31 reply_text = input_text + " の 軽減率50%×50%での実質HPは\n約 " + Math.floor(input_text / 0.25) + "です"; 32 } else if (history.text == "70%*50%") { 33 reply_text = input_text + " の 軽減率70%×50%での実質HPは\n約 " + Math.floor(input_text / 0.15) + "です"; 34 } else if (history.text == "25%*2") { 35 reply_text = input_text + " の 軽減率25%×25%での実質HPは\n約 " + Math.floor(input_text / 0.5625) + "です"; 36 } else if (history.text == "75%*2") { 37 reply_text = input_text + " の 軽減率75%×75%での実質HPは\n約 " + Math.floor(input_text / 0.0625) + "です"; 38 } else if (history.text == "50%*2+30%*2") { 39 reply_text = input_text + " の 軽減率50%×50%×30%×30%での実質HPは\n約 " + Math.floor(input_text / 0.1225) + "です"; 40 } else if (history.text == "50%*2+25%") { 41 reply_text = input_text + " の 軽減率50%×50%×25%での実質HPは\n約 " + Math.floor(input_text / 0.1875) + "です"; 42 } else if (history.text == "25%+50%*2") { 43 reply_text = input_text + " の 軽減率25%×50%×50%での実質HPは\n約 " + Math.floor(input_text / 0.1875) + "です"; 44 } else if (history.text == "35%*2") { 45 reply_text = input_text + " の 軽減率35%×35%の実質HPは\n約 " + Math.floor(input_text / 0.4225) + "です"; 46 } else if (history.text == "35%*25%") { 47 reply_text = input_text + " の 軽減率35%×25%の実質HPは\n約 " + Math.floor(input_text / 0.4875) + "です"; 48 } else if (history.text == "25%*35%") { 49 reply_text = input_text + " の 軽減率25%×35%の実質HPは\n約 " + Math.floor(input_text / 0.4875) + "です"; 50 } 51 setLastUserHistory(userId, input_text, false); 52 } 53 else { 54 if (input_text == "70%*2") { 55 reply_text = "軽減率70%×70%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。"; 56 } else if (input_text == "50%*2") { 57 reply_text = "軽減率50%×50%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。"; 58 } else if (input_text == "70%*50%") { 59 reply_text = "軽減率70%×50%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。"; 60 } else if (input_text == "25%*2") { 61 reply_text = "軽減率25%×25%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。"; 62 }else if (input_text == "75%*2") { 63 reply_text = "軽減率75%×75%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。"; 64 }else if (input_text == "50%*2+30%*2") { 65 reply_text = "軽減率50%×50%×30%×30%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。"; 66 } else if (input_text == "35%*2") { 67 reply_text = "軽減率35%×35%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。"; 68 }else if (input_text == "50%*2+25%") { 69 reply_text = "軽減率50%×50%×25%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。"; 70 }else if (input_text == "25%+50%*2") { 71 reply_text = "軽減率50%×50%×25%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。"; 72 }else if (input_text == "25%*35%") { 73 reply_text = "軽減率25%×35%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。"; 74 }else if (input_text == "35%*25%") { 75 reply_text = "軽減率35%×25%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。"; 76 } 77 if (reply_text) { 78 setLastUserHistory(userId, input_text, true); 79 } 80 else { 81 setLastUserHistory(userId, input_text, false); 82 } 83 } 84 85 var postData = { 86 "replyToken": e.replyToken, 87 "messages": [{ 88 "type": "text", 89 "text": reply_text 90 }] 91 }; 92 93 var options = { 94 "method": "post", 95 "headers": { 96 "Content-Type": "application/json", 97 "Authorization": "Bearer " + ACCESS_TOKEN 98 }, 99 "payload": JSON.stringify(postData) 100 }; 101 const response = UrlFetchApp.fetch(URL, options); 102 if (response.getResponseCode() !== 200) { 103 throw new Error(response.getContentText()); 104 } 105} 106 107function getLastUserHistory(userId) { 108 const userHistory = HistorySheet.getDataRange().getValues(); 109 for (let i = userHistory.length - 1; 0 < i; i--) { 110 if (userHistory[i][1] === userId) { 111 return { 112 date: userHistory[i][0], 113 userId: userHistory[i][1], 114 text: userHistory[i][2], 115 continuous: userHistory[i][3] 116 }; 117 } 118 } 119 return undefined; 120} 121 122function setLastUserHistory(userId, text, continuous) { 123 const values = [new Date(), userId, text, continuous]; 124 HistorySheet.appendRow(values); 125}
回答1件
あなたの回答
tips
プレビュー