質問編集履歴

1

Googleチャットに通知を飛ばすことはできました。ただ、指定したセル以外の編集も通知が来てしまいます。

2023/04/24 11:20

投稿

yakinitarou
yakinitarou

スコア1

test CHANGED
File without changes
test CHANGED
@@ -1,51 +1,58 @@
1
1
  ### 実現したいこと
2
2
  【実現したいこと】
3
- スプレッドシートにて、特定のセルが編集されたら、googlechatのグループ or 個人チャットに通知
3
+ スプレッドシートにて、特定のセルが編集されたらGoogleチャットに通知を送
4
4
 
5
5
  【参考URL】
6
6
  https://qiita.com/Shin/items/72eaa5fa24b608c58b93
7
7
 
8
8
  ### 発生している問題・エラーメッセージ
9
+ 下記ソースコードで通知が届くことは確認済みです。
9
- セル編集した場合、googlechatに通知が来
10
+ ただし、指したセル以外も編集しても通知が来てしまます。
11
+
12
+ //row = 行 column = 列 numRows = 何行分? numColumns = 何列分?)
13
+ //参考URL:https://qiita.com/sakaimo/items/ba5594208c254fa528dc
14
+ const row = 4;
15
+ const column = 2;
16
+ let data = sheet.getRange(row, column).getValues();
17
+
18
+ こちらでセルを指定しても反映されないです。
19
+ 幼稚な質問で申し訳ございませんが、有識者の方、ご教授お願いします。
10
20
 
11
21
  ### 該当のソースコード
12
22
  ```
13
23
  //GoogleチャットでIncoming Webhookを利用したボット投稿を行う関数
14
24
  function postGoogleChat() {
15
25
 
16
- //事前に作成したWebhookのURLを定義する
17
- let webhookUrl = "https://chat.googleapis.com/v1/spaces/AAAAMVoWleM/messages?key=xxxxxxxxxxxxxx&token=xxxxxxxxxxxxxxxxxxxxx";
18
-
19
- /* Spreadsheet */
26
+ /* スプレッドシート名 */
27
+ //〇〇〇にシートタブ名前(シート1等)を記入
20
- let sheetName = 'シート1';
28
+ let sheetName = 'シートNAME';
21
29
  let sheet = SpreadsheetApp.getActive().getSheetByName(sheetName);
22
30
 
23
- // データ取得範囲指定
31
+ //row = 行 column = 列 numRows = 何行分? numColumns = 何列分?)
32
+ //参考URL:https://qiita.com/sakaimo/items/ba5594208c254fa528dc
24
- const row = 1;
33
+ const row = 4;
25
- const column = 1;
34
+ const column = 2;
26
- const LastRow = sheet.getDataRange().getLastRow();
35
+ let data = sheet.getRange(row, column).getValues();
27
- const LastColumn = sheet.getDataRange().getLastColumn();
28
- const numRows = 4;
29
- const numColumns = 3;
30
36
 
37
+ /* Google Chat通知 */
31
- // データ取得
38
+ //〇〇〇にWebhookのURLを記入
32
- let data = sheet.getRange(row, column, numRows, numColumns).getValues();
39
+ const url = '〇〇〇(URL)';
33
40
 
34
- //Googleチャット投稿するボットメッセージ定義する
41
+ //〇〇〇にBot送信したい文言記入
35
- let message = {
36
- 'text' : '焼肉'
42
+ for (i=0; i < data.length; i++) {
37
- };
38
43
 
44
+ let text = data[i][0];
39
- //HTTPSのPOST時のオプションパラメータを設定する。APIの認証のため、headersの情報も必須
45
+ let message = {'text' : '追加されたよ。確認よろお願いします。'}
40
- let options = {
46
+ let params = {
47
+ 'method': 'POST',
48
+ 'headers' : {
49
+ 'Content-Type': 'application/json; charset=UTF-8'
50
+ },
41
- 'payload' : JSON.stringify(message),
51
+ 'payload':JSON.stringify(message)
42
- 'myamethod' : 'POST',
43
- 'contentType' : 'application/json'
44
- };
52
+ };
45
53
 
46
- //WebhookのURL対しHTTP POSTを実行する
47
- let response = UrlFetchApp.fetch(webhookUrl,options);
54
+ UrlFetchApp.fetch(url, params);
55
+ }
48
56
  }
49
-
50
57
  ```
51
58