GASを使い、LINEbotで色々な応答をするbotを製作中です。
色々な方のコードを参考に以下のコードを作りましたが、ボタンのコードをプラスしても反応してくれません。また「indexOf」を使用したところ「image」が今まで反応していたのに、反応してくれなくなりました。
プログラミングは全くの無知で初心者になります。
質問内容として
・「ボタン」などの機能をプラスする場合どうすればいいのか。
・「画像」に反応させるにはどうすればいいのか。
どこがどうだめなのか、どうすればいいのか、どうかご教授お願いいたします。
var
1 2var spreadsheet_id = "XXX" 3 4var tak_spreadsheet_id = "XXX" 5 6 7 8 9 10 11 12 13function doPost(e) { 14 var contents = e.postData.contents; 15 var obj = JSON.parse(contents); 16 var events = obj["events"]; 17 for (var i = 0; i < events.length; i++) { 18 if (events[i].type == "message") { 19 reply_message(events[i]); 20 } else if (events[i].type == "postback") { 21 post_back(events[i]); 22 } 23 } 24} 25 26 27function reply(data){ 28 var url = "https://api.line.me/v2/bot/message/reply"; 29 var headers = { 30 "Content-Type" : "application/json; charset=UTF-8", 31 'Authorization': 'Bearer ' + access_token, 32 } 33 34 var text = ""; 35 36 if (data.events[0].message.text.indexOf("あ") > -1) { 37 var tak = SpreadsheetApp.openById(tak_spreadsheet_id).getSheetByName("あ"); 38 var takData = tak.getRange(1, 1, tak.getLastRow()); 39 var intRandomNum = Math.round(Math.random()*tak.getLastRow()); 40 41 text = takData.getValues()[intRandomNum][0]; 42 } 43 44 if (data.events[0].message.text === "い") { 45 var tak = SpreadsheetApp.openById(tak_spreadsheet_id).getSheetByName("い"); 46 var takData = tak.getRange(1, 1, tak.getLastRow()); 47 var intRandomNum = Math.round(Math.random()*tak.getLastRow()); 48 49 text = takData.getValues()[intRandomNum][0]; 50 } 51 52 if (data.events[0].message.type === "image") { 53 var tak = SpreadsheetApp.openById(tak_spreadsheet_id).getSheetByName("画像"); 54 var takData = tak.getRange(1, 1, tak.getLastRow()); 55 var intRandomNum = Math.round(Math.random()*tak.getLastRow()); 56 57 text = takData.getValues()[intRandomNum][0]; 58 } 59 60 61function reply_message(e) { 62 var input_text = e.message.text; 63 if (input_text == "ボタン") { 64 var postData = { 65 "replyToken": e.replyToken, 66 "messages": [{ 67 "type": "template", 68 "altText": "select", 69 "template": { 70 "type": "buttons", 71 "thumbnailImageUrl": "https://~.png", 72 "title": "Menu", 73 "text": "Please select", 74 "actions": [{ 75 "type": "postback", 76 "label": "postback", 77 "data": "postback selected" 78 }, 79 { 80 "type": "message", 81 "label": "message", 82 "text": "text:message" 83 }, 84 { 85 "type": "uri", 86 "label": "uri", 87 "uri": "https://linecorp.com" 88 }, 89 { 90 "type": "datetimepicker", 91 "label": "datetimepicker", 92 "data": "datetimepicker selected", 93 "mode": "datetime", 94 "initial": "2017-10-25T00:00", 95 "max": "2017-12-31T23:59", 96 "min": "2017-01-01T00:00" 97 } 98 ] 99 } 100 }] 101 }; 102 } 103 fetch_data(postData); 104} 105 106function post_back(e) { 107 var data = e.postback.data; 108 var replay_text = ""; 109 if (data == "postback selected") { 110 replay_text = data; 111 } else if (data == "datetimepicker selected") { 112 replay_text = data + "\n" + e.postback.params['datetime']; 113 } 114 115 var postData = { 116 "replyToken": e.replyToken, 117 "messages": [{ 118 "type": "text", 119 "text": replay_text + "\n" + JSON.stringify(e.postback) 120 }] 121 }; 122 fetch_data(postData); 123} 124 125function fetch_data(postData) { 126 var options = { 127 "method": "post", 128 "headers": { 129 "Content-Type": "application/json", 130 "Authorization": "Bearer " + access_token 131 }, 132 "payload": JSON.stringify(postData) 133 }; 134 UrlFetchApp.fetch("https://api.line.me/v2/bot/message/reply", options); 135} 136 137 138 var postData = { 139 "replyToken" : data.events[0].replyToken, 140 "messages" : [ 141 { 142 'type':'text', 143 'text':text, 144 } 145 ] 146 }; 147 148 var options = { 149 "method" : "post", 150 "headers" : headers, 151 "payload" : JSON.stringify(postData) 152 }; 153 154 155 return UrlFetchApp.fetch(url, options); 156} 157 158 159function doPost(e) { 160 var json = JSON.parse(e.postData.contents); 161 var data = SpreadsheetApp.openById(spreadsheet_id).getSheetByName('log').getRange(1, 1).setValue(json.events); 162 163 reply(json); 164}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/03/10 23:40