前提・実現したいこと
チャットワークとスプレッドシートを連携させ、スプレッドシートに書き込みや編集があればチャットワークに通知が行くようにしたいです。
参考にしたサイト:https://sterfield.co.jp/programmer/google%E3%82%B9%E3%83%97%E3%83%AC%E3%83%83%E3%83%89%E3%82%B7%E3%83%BC%E3%83%88%E3%81%AE%E6%9B%B4%E6%96%B0%E3%82%92chatwork%E3%81%B8%E9%80%9A%E7%9F%A5%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F/
エラーが出るうえで稼働し、英文が返ってきます。
発生している問題・エラーメッセージ
Exception: Request failed for https://api.chatwork.com returned code 400. Truncated server response: {"errors":["Parameter 'body' is too short"]} (use muteHttpExceptions option to examine full response)
postChatwork @ コード.gs:22
該当のソースコード
トークンやAPIは実際には入力しています。
rb
1var SHEET_ID = '******'; 2var SHEET_NAME = '******'; 3 4var ROOM_ID = '******'; 5var TOKEN = '******'; 6 7function postChatwork(message) { 8 var payload = { 9 'body' : message 10 }; 11 12 var headers = { 13 'X-ChatWorkToken' : TOKEN 14 }; 15 16 var options = { 17 'method' : 'post', 18 'payload' : payload, 19 'headers' : headers 20 }; 21 22 UrlFetchApp.fetch('https://api.chatwork.com/v2/rooms/' + ROOM_ID + '/messages', options); 23} 24 25function onUpdateBatchCheck(){ 26 27 var spreadsheet = SpreadsheetApp.openById(SHEET_ID); 28 var sheet = spreadsheet.getSheetByName(SHEET_NAME); 29 var data = sheet.getDataRange().getValues(); 30 31 var stateColumnIndex = 1; 32 var targetColumnIndex = 0; //A列の更新をチェック 33 var targetRowIndexes = []; 34 35 for(var i = 1;i < data.length; i++){ 36 if((!data[i][stateColumnIndex]) && (data[i][targtColumnIndex])){ 37 targetRowIndexes.push(i); 38 } 39 } 40 if(targetRowIndexes.length == 0) return; 41 var msg= ''; 42 for(var i = 0; i < targetRowIndexes.length; i++){ 43 var row = targetRowIndexes[i]; 44 var cell = data[row][targetColumnIndex]; 45 46 msg += Utilities.formatString('[info]%d行目が更新されました\n内容 : %s[/info]', row + 1,cell); 47 sheet.getRange(row + stateColumnIndex + 1).setValue(true); 48 } 49 50 var message = Utilities.formatString(' シート[%s]が更新されました\n%s', SHEET_NAME, msg); 51 postChatwork(message); 52}
あなたの回答
tips
プレビュー