Q&A
実現したいこと
業務上の数字報告をフォームでし、LINEに転送したときにセクション名も表示したいです。
前提
この数字報告が、フォームでは同じ報告対象の項目を個人数字なのか店舗数字なのかを、セクション毎で分けて報告するが、LINEに転送されるとフォームの質問項目のみ表示されなんの数字かがわからない状況です。
なので、LINEに送信された際に以下のイメージで送信されてほしい。
[実績報告]
セクション1
質問/回答
セクション2
質問/回答
該当のソースコード
https://qiita.com/guchimina/items/aa36e27875ae26876d2c
上記のコードをコピペで作成しております。
JavaScript
1function GoogleFormToLine(){ 2 var sheet = SpreadsheetApp.getActiveSheet(); //sheetの指定 3 var row = sheet.getLastRow(); //行数 4 var column = sheet.getLastColumn(); //列数 5 var range = sheet.getDataRange(); //sheetから範囲指定するための準備 6 var message = ""; 7 for(var i=2;i<=column;i++){ 8 var item = range.getCell(1, i).getValue(); //1行目 9 var value = range.getCell(row, i).getValue(); //最終行 10 if (!value) {continue}; 11 message += "\n"+item+ +value+"\n"; 12 } 13 SendToLine(message); 14} 15 16//LINEに通知 17function SendToLine(message){ 18 //ファイル→プロジェクトのプロパティ→スプリクトのプロパティからLINE_TOKENを設定しておく 19 var token = PropertiesService.getScriptProperties().getProperty('LINE_TOKEN'); 20 var op = 21 { 22 "method" : "post", 23 "Content-Type" : "application/x-www-form-urlencoded", 24 "payload": "message=" + message, 25 "headers":{"Authorization" : "Bearer " + token} 26 }; 27 var res = UrlFetchApp.fetch("https://notify-api.line.me/api/notify",op); 28 Logger.log(JSON.parse(res.getContentText())); //Response 29}
試したこと
調べてもそれらしきものを見つけれなかったためコードの方は試してないです。
フォーム送信後のスプレッドにてセクションを入れたいところに新しい列を作成してみるも、LINEに送信すると、なぜかセクションの後ろに0がついてしまう。
その後実際に報告する数字が0だった質問は省くようコード入力するも、そうしたらセクションが空白項目になるため、出て来ない。
追記画像
修正後コード
javascript
1//spreadsheetからデータを取得 2function GoogleFormToLine(){ 3 var sheet = SpreadsheetApp.getActiveSheet(); //sheetの指定 4 var row = sheet.getLastRow(); //行数 5 var column = sheet.getLastColumn(); //列数 6 var range = sheet.getDataRange(); //sheetから範囲指定するための準備 7 var message = ""; 8 for(var i=3;i<=column;i++){ 9 var item = range.getCell(1, i).getValue(); //1行目 10 var value = range.getCell(row, i).getValue(); //最終行 11 if (item == "報告対象日" ){ 12 var date = new Date(value) 13 var weeks = ["日","月","火","水","木","金","土"]; 14 var weekstr = weeks[date.getDay()]; 15 var ymd = Utilities.formatDate(date, "Asia/Tokyo", "MM/dd"); 16 value = ymd + "(" + weekstr + ")" 17 } 18 if (item.includes("【") && item.includes("】")) { 19 value = ""; 20 } else { 21 item += " / "; 22 } 23 24 message += "\n"+item + value+ "\n" ; 25 } 26 SendToLine(message); 27} 28//LINEに通知 29function SendToLine(message){ 30 var token = '***'; //テスト1 31 var op = 32 { 33 "method" : "post", 34 "Content-Type" : "application/x-www-form-urlencoded", 35 "payload": "message=" + message, 36 "headers":{"Authorization" : "Bearer " + token} 37 }; 38 var res = UrlFetchApp.fetch("https://notify-api.line.me/api/notify",op); 39 Logger.log(JSON.parse(res.getContentText())); //Response 40} 41
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2023/04/01 12:41 編集
2023/04/02 08:08
2023/04/02 08:10
2023/04/02 12:05