###GASを使って、linebotを作ろうとしています。特定のワードが何回言われたのかを記憶したいです。
特定のワードは、ここでは仮に「test」とします
普段なら
gs
1let count = 0; 2 3if(userMessage == "test") { 4 let count = count+1; 5} 6
とやってカウントしていきますが、今回はlinebotなので、何か言われるたびに
let count = 0;
を走ってしまうためカウントができません。
やってみたこと
HTMLを使って、情報をdiv書き換え、読み込みをすることで記憶しようとしました。
gs
1function doGet() { 2 return HtmlService.createHtmlOutputFromFile('index'); 3} 4 5 var ACCESS_TOKEN = "";//実際は入力しています。 6 7function doPost(e) { 8 // WebHookで受信した応答用Token 9 var replyToken = JSON.parse(e.postData.contents).events[0].replyToken; 10 // ユーザーのメッセージを取得 11 var userMessage = JSON.parse(e.postData.contents).events[0].message.text; 12 // 応答メッセージ用のAPI URL 13 var url = 'https://api.line.me/v2/bot/message/reply'; 14 15var count = "a"//確認のためにやってます 16 17if(userMessage == "test") {; 18 var data = document.getElementById('data').split(/<div id="data">|</div>/);//divの中を取得 19 var count = Number(data[1]) + 1;//カウント 20} 21 22 23 UrlFetchApp.fetch(url, { 24 'headers': { 25 'Content-Type': 'application/json; charset=UTF-8', 26 'Authorization': 'Bearer ' + ACCESS_TOKEN, 27 }, 28 'method': 'post', 29 'payload': JSON.stringify({ 30 'replyToken': replyToken, 31 'messages': [{ 32 'type': 'text', 33 'text': "テスト"+count, 34 }], 35 }), 36 }); 37 return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON); 38} 39
HTML
1<!DOCTYPE html> 2<html> 3 <head> 4 <base target="_top"> 5 </head> 6 <body> 7 <div id="data">0</div> 8 </body> 9</html>
現状
testにだけ無反応になります。HTMLを参照できていないのか、関数がうまくできていないのか全くわかりません。
そもそも、もっと賢い方法がある気がします。もしあれば、ご教授ください。
また、どうしてレスポンスがないのか分かればそれもお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/02 13:56
退会済みユーザー
2021/10/02 13:59 編集
2021/10/02 14:07
2021/10/02 14:16
退会済みユーザー
2021/10/02 14:32 編集
2021/10/02 14:43 編集
退会済みユーザー
2021/10/02 14:47 編集
2021/10/02 14:55