実現したいこと
タイトルにも記載させていただいたのですが、スプレッドシートの特定列に書き込みがあった場合に Google Chat にそのセルの書き込みを飛ばしたいと考えております。(A3:A と B3:B に書き込みがあった場合に A3:A と B3:B の書き込み内容を Google Chat に飛ばしたい)
右も左もわかっていない初心者には高望みかもしれませんが、どうかお知恵をお借りできたらと思っております。
発生している問題・分からないこと
下記の Link にて紹介されていたコードを元にトライしているのですが、何点か問題にぶちあったってしまっております。(職場にマクロを組めるひともおらず、だれにも質問ができず困っております)
<問題点>
❶そもそもエラーコードがでてしまう(下にエラーコードを掲載しました)
❷シートの特定の列ではなく、どこが編集されても通知が送られてしまう可能性あり
❸シートの列 2か所が埋まった場合に通知がとばされない
❹通知文章が固定のものしか送られない可能性あり
❶のエラーコード
Exception: Request failed for https://chat.googleapis.com returned code 400. Truncated server response: {
"error": {
"code": 400,
"message": "Invalid JSON payload received. Unknown name "手上げあり" at 'message': Cannot find field.",
"statu... (use muteHttpExceptions option to examine full response)
該当のソースコード
function sheetsToHangout() { /* Spreadsheet */ let sheetName = '〇〇〇'; let sheet = SpreadsheetApp.getActive().getSheetByName(sheetName); // データ取得範囲指定 const row = 2; const column = 1; const LastRow = sheet.getDataRange().getLastRow(); const LastColumn = sheet.getDataRange().getLastColumn(); const numRows = LastRow - row + 1; const numColumns = LastColumn - column + 1; // データ取得 let data = sheet.getRange(row, column, numRows, numColumns).getValues(); /* Hangout Chat */ // 投稿先指定 const url = '〇〇〇'; // 手順1で取得したURLをセット for (i=0; i < data.length; i++) { // 送信内容作成 let text = data[i][0]; let message = {'〇〇〇' : text} let params = { 'method': 'POST', 'headers' : { 'Content-Type': 'application/json; charset=UTF-8' }, 'payload':JSON.stringify(message) }; // 送信 UrlFetchApp.fetch(url, params); } }
特になし
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
下記の Link を参照にトライしてみております。
https://qiita.com/Shin/items/72eaa5fa24b608c58b93
補足
特になし
回答1件
あなたの回答
tips
プレビュー