前提・実現したいこと
https://chusotsu-program.com/line-gas/を参考に
先頭の文字を手掛かりに、LINEの投稿(クイズの出題と答え)を
Googleスプレッドシートに保存しようとしています。
上記サイトと違い、
0. 2つの先頭の文字($,%)に対応させ、その文字を除去したうえで
0. $で始まる投稿内容(問題文)は、questionsという名のシートに
0. %で始まる投稿内容(解答)は、answersという名のシートに分けて保存しようと思います
(同じブック上の2つのシートです)
なお
問題文(通し番号、問題文、ヒント)は1日に数問分、
解答((通し番号、正答)×問題数)は1日に1回、投稿されます。
LINE Messaging APIなどの設定はできていると思います。
発生している問題・エラーメッセージ
2つの先頭の文字($,%)で始まる投稿を拾い上げ、同じシートに保存するまではできたのですが、
別々のシートに保存しようとしたところ、$で始まる投稿を拾わなくなり、
%で始まる投稿は、両方のシートに保存されてしまうようになりました
文字ごとにbotを用意すべきでしょうか
該当のソースコード
1 2function doPost(e) { 3 let answerMessage; 4 5 // 投稿されたメッセージを取得 6 let userMessage = JSON.parse(e.postData.contents).events[0].message.text; 7 8 if(userMessage.match(/^$/)) { 9 // $から始まるメッセージの場合、$を除いた文字列を再代入 10 userMessage = userMessage.substr(1); 11 } else if(userMessage.match(/^%/)) { 12 // %から始まるメッセージの場合、%を除いた文字列を代入 13 answerMessage = userMessage.substr(1); 14 }else{ 15 // $や%から始まらない場合は何もしない(処理終了) 16 return; 17 } 18 19 // スプレッドシートへ保存======================================= 20 21 const spreadsheetId = "スプレッドシートのID"; 22 const sheetName = "questions"; 23 const spreadsheet = SpreadsheetApp.openById(spreadsheetId); 24 const sheet = spreadsheet.getSheetByName(sheetName); 25 const sheet2 = spreadsheet.getSheetByName('answers'); 26 27 // 空白・タブ・改行で区切り配列に変換 28 let arr1 = userMessage.split(/\s/); 29 let arr2 = answerMessage.split(/\s/); 30 31 // 配列の先頭に日時を代入 32 arr1.unshift(new Date()); 33 arr2.unshift(new Date()); 34 // セルの最下部に配列を転記 35 sheet.appendRow(arr1); 36 sheet2.appendRow(arr2); 37 // ======================================= 38 39 return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON); 40 41}
試したこと
$で始まる投稿を収納するための変数を用意したりしましたが、上手くいきませんでした。
修正が反映されるよう、webアプリとして公開のバージョンを新しくするなど
補足情報(FW/ツールのバージョンな
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/13 04:03
2020/12/13 04:50 編集