質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Google Charts

Google Chartsは、円グラフ・棒グラフ・折れ線グラフなどのさまざまなグラフをJavaScriptで容易に表示できる無料のライブラリ。デザインやイベント処理といったカスタマイズができ、商用利用も可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

解決済

Googleチャット に Spreadsheet に書き込みがあった時に通知を送るスクリプト

tsubugai.taka
tsubugai.taka

総合スコア2

Google Charts

Google Chartsは、円グラフ・棒グラフ・折れ線グラフなどのさまざまなグラフをJavaScriptで容易に表示できる無料のライブラリ。デザインやイベント処理といったカスタマイズができ、商用利用も可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

2回答

0評価

0クリップ

600閲覧

投稿2021/12/30 04:49

お世話になっております。

スプレッドシートの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取得がうまくいってないのかと思うのですが、何が違っているのかが基礎がわかっていないためか原因特定までできませんでした。

恐れ入りますが、ご教示いただけましたら有難い限りでございます。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

papinianus
papinianus

2021/12/30 06:15

どういうトリガーを指定しているか、またそのエラーが出るときはどうやって実行しているのか、それぞれご共有ください。
tsubugai.taka
tsubugai.taka

2021/12/30 06:53

シート名は「シート1 / シート2....」などであってますでしょうか? 再度打ち間違いがないようにコピぺしてみましたがだめでした。。 実行する関数を選択  ➔ sheetsToHangout デプロイ時に実行  ➔ Head(これ以外選択肢なし) イベントのソースを選択  ➔ スプレッドシートから イベントの種類を選択  ➔ 編集時 でトリガーを保存しました!
papinianus
papinianus

2021/12/30 06:55

ダメ、というのは全く同じエラーになるということでしょうか。 エラーはどうやって見ていますか。
tsubugai.taka
tsubugai.taka

2021/12/30 07:00

見てみたらエラー表記がかわっておりました!! 保存➔実行するを押してみて正常に動作するか確認してみています! ただ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)
tsubugai.taka
tsubugai.taka

2021/12/30 07:17

作動しました!!ただセルの内容ではなく「さんから報告あり」しかチャットに届かないのと一度の編集で3回くらい通知が届いてしまいます。
papinianus
papinianus

2021/12/30 11:18

複数送られてくるのは、8から11行まで使っているのではないかと思います。行数が増えれば増えるほど繰り返し送ってくるコードですからそういう意図があると思ってました。 あとは、今、B列の内容しか送らないので、B列に何も書いてなければそういうメッセージになるかなと。 やりたいことを整理して、シートのサンプルがあればコードかけますけど。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Google Charts

Google Chartsは、円グラフ・棒グラフ・折れ線グラフなどのさまざまなグラフをJavaScriptで容易に表示できる無料のライブラリ。デザインやイベント処理といったカスタマイズができ、商用利用も可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。