お世話になっております。
スプレッドシートの2列目8行目以降に入力されたときにその内容+「さんから報告あり」とGoogleチャット(スペース)に通知が来るように設定したいのですが、エラーでうまくできません。
こんな初歩的な質問をこの場でしてしまい、誠に申し訳ございませんが、周りにわかる人もおらず困っております。
もし宜しければお力添えを頂けましたら幸いでございます。
function sheetsToHangout() { /* Spreadsheet */ let sheetName = '〇〇〇'; //ここの〇〇〇にはシートタブ名前(シート1等)を入れています let sheet = SpreadsheetApp.getActive().getSheetByName(sheetName); const row = 8; const column = 2; 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 = '〇〇〇'; //ここの〇〇〇には実際はWebhookの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); } }
エラー表示は「TypeError: Cannot read property 'getDataRange' of null
sheetsToHangout @ コード.gs:9」と出てきます。
恐らくData取得がうまくいってないのかと思うのですが、何が違っているのかが基礎がわかっていないためか原因特定までできませんでした。
恐れ入りますが、ご教示いただけましたら有難い限りでございます。
どういうトリガーを指定しているか、またそのエラーが出るときはどうやって実行しているのか、それぞれご共有ください。
シート名は「シート1 / シート2....」などであってますでしょうか?
再度打ち間違いがないようにコピぺしてみましたがだめでした。。
実行する関数を選択
➔ sheetsToHangout
デプロイ時に実行
➔ Head(これ以外選択肢なし)
イベントのソースを選択
➔ スプレッドシートから
イベントの種類を選択
➔ 編集時
でトリガーを保存しました!
ダメ、というのは全く同じエラーになるということでしょうか。
エラーはどうやって見ていますか。
見てみたらエラー表記がかわっておりました!!
保存➔実行するを押してみて正常に動作するか確認してみています!
ただSheetに書き込みがあっても何の通知も現状届いておりません
Exception: Request failed for https://chat.googleapis.com returned code 400. Truncated server response: {
"error": {
"code": 400,
"message": "Message cannot be empty.",
"status": "INVALID_ARGUMENT"
}
}
(use muteHttpExceptions option to examine full response)
作動しました!!ただセルの内容ではなく「さんから報告あり」しかチャットに届かないのと一度の編集で3回くらい通知が届いてしまいます。
複数送られてくるのは、8から11行まで使っているのではないかと思います。行数が増えれば増えるほど繰り返し送ってくるコードですからそういう意図があると思ってました。
あとは、今、B列の内容しか送らないので、B列に何も書いてなければそういうメッセージになるかなと。
やりたいことを整理して、シートのサンプルがあればコードかけますけど。
回答2件
あなたの回答
tips
プレビュー