回答編集履歴

11

修正

2022/05/02 06:24

投稿

退会済みユーザー
test CHANGED
@@ -38,8 +38,8 @@
38
38
  payload : payload
39
39
  };
40
40
 
41
- // Slackに投稿
42
- UrlFetchApp.fetch({webhook URL}, options);
41
+ // Slackに投稿 (実際のSlack投稿用Incoming webhook URLに置き換えてください)
42
+ UrlFetchApp.fetch("https://hooks.slack.com/services/**/**/**", options);
43
43
 
44
44
  /*-- 以上Slackへの投稿部分ここまで --*/
45
45
 

10

 

2022/05/02 05:07

投稿

退会済みユーザー
test CHANGED
@@ -86,7 +86,7 @@
86
86
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-05-02/dbd61437-4499-46cc-8d28-0e46ad27d983.png)
87
87
   
88
88
   
89
- 4. 「URL」に、先ほどコピーしたGASのデプロイURLを入力。
89
+ 4. 「URL」に、先ほどコピーしたGASのデプロイURLを入力。( https:// から ~exec まで)
90
90
  「Query string params」の左側boxに「itemname」、右側boxに**GASに渡したいデータ**を指定します。
91
91
  ※下の画像で右側boxに入力しているのは例に過ぎません。
92
92
  実際には、Zapierの前のActionでスプレッドシートに自動入力しているデータと同じもの(契約時の商品名?)を指定してください。

9

 

2022/05/02 05:05

投稿

退会済みユーザー
test CHANGED
@@ -1,8 +1,10 @@
1
1
  Zapierなどの外部ツールによってスプレッドシートに自動入力されるような場合、入力された箇所を特定することは困難です。
2
+
3
+ ・onChange(変更時)をトリガーにすることは可能ですが、入力された箇所を特定することができません。 
2
- (質問文の記事は、ユーザーが手で入力を行った場合が想定されており、このような場合はActiveRange()で入力箇所を推定できます)
4
+ (質問文の記事は、ユーザーが手で入力を行った場合が想定されており、このような場合はgetActiveRange()で入力箇所を推定できます。Zapier等による自動入力は手入力ではないため、この方法が使えません。
3
-  
5
+ ・自動入力されてすぐに発火するわけではなく、ランダムな間隔で発火されます。
4
- 自動入力の場合、onEdit(編集時)トリガーにすることもできません。
6
+ ・onEdit(編集時)トリガーは、自動入力の場合発火しません。
5
- ・onChange(変更時)をトリガーにすることは可能ですが、自動入力されてすぐに発火するわけではなく、ランダムな間隔で発火されます。またonChangeの場合、入力された箇所を特定することもできません。
7
+
6
8
 
7
9
  # 代替案
8
10
 
@@ -70,7 +72,7 @@
70
72
 
71
73
  ## 【Zapier側】
72
74
  1.「Edit Zapier」画面を開いて、現状のZAPを編集します。
73
- 現状のフローの続きに追加するため、下にある「+」記号をクリックします。
75
+ フロー追加するため、最後のアクションの下にある「+」記号をクリックします。
74
76
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-05-02/1236f3e9-c692-4e9a-a963-c74635a22542.png)
75
77
   
76
78
   
@@ -84,10 +86,10 @@
84
86
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-05-02/dbd61437-4499-46cc-8d28-0e46ad27d983.png)
85
87
   
86
88
   
87
- 4. 「URL」に、GASのデプロイURL(後述)を入力。
89
+ 4. 「URL」に、先ほどコピーしたGASのデプロイURLを入力。
88
90
  「Query string params」の左側boxに「itemname」、右側boxに**GASに渡したいデータ**を指定します。
89
- 画像では、右側boxに入力しているのは例に過ぎません。
91
+ ※下の画像で右側boxに入力しているのは例に過ぎません。
90
- 実際には、Zapierの前のActionでスプレッドシートに自動入力させているデータと同じもの(契約時の商品名?)を指定してください。
92
+ 実際には、Zapierの前のActionでスプレッドシートに自動入力ているデータと同じもの(契約時の商品名?)を指定してください。
91
93
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-05-02/6e9d390b-9074-4034-945d-697be0071aaa.png)
92
94
   
93
95
   

8

 

2022/05/02 02:28

投稿

退会済みユーザー
test CHANGED
@@ -80,14 +80,14 @@
80
80
    
81
81
   
82
82
 
83
- 3.Action Eventから「GET」を指定します。
83
+ 3.Action Eventから「GET」を選択します。
84
84
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-05-02/dbd61437-4499-46cc-8d28-0e46ad27d983.png)
85
85
   
86
86
   
87
- 4. 「URL」に、GASのデプロイURL(後述)
87
+ 4. 「URL」に、GASのデプロイURL(後述)を入力。
88
- Query string params」の左側boxに「itemname」、右側boxにGASに渡したいデータを指定します。
88
+ 「Query string params」の左側boxに「itemname」、右側boxに**GASに渡したいデータ**を指定します。
89
89
  画像では、右側boxに入力しているのは、例に過ぎません。
90
- 実際には、Zapierの前のActionでスプレッドシートに自動入力させているデータと同じもの(商品名を含むデータ?)を指定してください。
90
+ 実際には、Zapierの前のActionでスプレッドシートに自動入力させているデータと同じもの(契約時の商品名?)を指定してください。
91
91
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-05-02/6e9d390b-9074-4034-945d-697be0071aaa.png)
92
92
   
93
93
   

7

追記

2022/05/02 02:20

投稿

退会済みユーザー
test CHANGED
@@ -4,17 +4,16 @@
4
4
  ・自動入力の場合、onEdit(編集時)をトリガーにすることもできません。
5
5
  ・onChange(変更時)をトリガーにすることは可能ですが、自動入力されてすぐに発火するわけではなく、ランダムな間隔で発火されます。またonChangeの場合、入力された箇所を特定することもできません。
6
6
 
7
+ # 代替案
8
+
7
9
  GASでWebアプリを作り、
8
10
  契約完了時Zapierがスプレッドシートへデータ入力する際に、同時にZapierからGASへ商品名を通知、
9
11
  GAS側でその商品名に応じてメッセージを組み立て、slackへ投げる、というやり方はできるかもしれません。
10
12
 
11
- Zapier側:
12
- Zapierから、GASのデプロイURLに商品名(itemname)をパラメータに設定してリクエスト
13
- ```
13
+ ---
14
- GET: https://script.google.com/macros/s/***/exec?itemname=商品A
15
- ```
16
14
 
15
+ ## 【GAS側】
17
- GAS側(webアプリとしてデプロイ):
16
+ ①エディタで下記のコードを入力して、保存します。
18
17
  ```js
19
18
  function doGet(e) {
20
19
  const itemName = e.parameter.itemname;
@@ -24,6 +23,7 @@
24
23
  } else if (itemName === '商品B') {
25
24
  message = '商品Bが入力されました';
26
25
  }
26
+ /*-- 以下Slackへの投稿部分 --*/
27
27
  const data = {
28
28
  username : 'ユーザ名',
29
29
  text : message
@@ -38,5 +38,63 @@
38
38
 
39
39
  // Slackに投稿
40
40
  UrlFetchApp.fetch({webhook URL}, options);
41
+
42
+ /*-- 以上Slackへの投稿部分ここまで --*/
43
+
44
+ return toJson("OK");
41
45
  }
46
+
47
+ function toJson(content) {
48
+ const output = ContentService.createTextOutput();
49
+ output.setMimeType(ContentService.MimeType.JSON);
50
+ output.setContent(JSON.stringify(content));
51
+ return output;
52
+ }
53
+
42
54
  ```
55
+ ②Webアプリとしてデプロイします。
56
+ このとき、「次のユーザーとして実行」を自分、 **「アクセスできるユーザー」を「全員」** に指定する必要があります。
57
+ (そうしないとZapierがGASにアクセスできません)
58
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-05-02/725fa236-c0ca-4e7b-82d1-7b8bb94ee511.png)
59
+
60
+ このとき発行されたデプロイURLをコピーしておきます。
61
+
62
+ ③ 注意:GASの内容を修正する度、保存してデプロイを行う必要があります。デプロイする度にデプロイURLも変わるのでZapierで設定し直す必要があります。
63
+ Zapier側に設定したデプロイURLを毎回修正したくない場合は、「GAS デプロイURLの固定」でやり方を検索してください。
64
+ なお、テストデプロイで発行されるURL(末尾dev)は、Zapierがアクセスできないので使えません。
65
+
66
+ ---
67
+  
68
+  
69
+  
70
+
71
+ ## 【Zapier側】
72
+ 1.「Edit Zapier」画面を開いて、現状のZAPを編集します。
73
+ 現状のフローの続きに追加するため、下にある「+」記号をクリックします。
74
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-05-02/1236f3e9-c692-4e9a-a963-c74635a22542.png)
75
+  
76
+  
77
+
78
+ 2.Actionから、「Webhooks by Zapier」を選択します。
79
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-05-02/3ac1c04e-60b4-4850-8825-c37e765f67e0.png)
80
+   
81
+  
82
+
83
+ 3.Action Eventから「GET」を指定します。
84
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-05-02/dbd61437-4499-46cc-8d28-0e46ad27d983.png)
85
+  
86
+  
87
+ 4. 「URL」に、GASのデプロイURL(後述)、
88
+ 「 Query string params」の左側boxに「itemname」、右側boxにGASに渡したいデータを指定します。
89
+ 画像では、右側boxに入力しているのは、例に過ぎません。
90
+ 実際には、Zapierの前のActionでスプレッドシートに自動入力させているデータと同じもの(商品名を含むデータ?)を指定してください。
91
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-05-02/6e9d390b-9074-4034-945d-697be0071aaa.png)
92
+  
93
+  
94
+ 5.「Continue」をクリックし、TEST をクリックします。TESTが完了すればCloseを押して終了です。
95
+  
96
+  
97
+
98
+  
99
+
100
+

6

 

2022/04/30 23:44

投稿

退会済みユーザー
test CHANGED
@@ -1,7 +1,6 @@
1
- Zapierなどの外部ツールによってスプレッドシートに自動入力されるような場合、質問文に記載の記事のように
1
+ Zapierなどの外部ツールによってスプレッドシートに自動入力されるような場合、入力された箇所を特定することは困難です。
2
- 入力された箇所を特定することはできません。
3
- (質問文の記事は、ユーザーが手で入力を行った場合が想定されており、このような場合はActiveRangeで変更箇所を定でき
2
+ (質問文の記事は、ユーザーが手で入力を行った場合が想定されており、このような場合はActiveRange()入力箇所を定できます
4
-
3
+  
5
4
  ・自動入力の場合、onEdit(編集時)をトリガーにすることもできません。
6
5
  ・onChange(変更時)をトリガーにすることは可能ですが、自動入力されてすぐに発火するわけではなく、ランダムな間隔で発火されます。またonChangeの場合、入力された箇所を特定することもできません。
7
6
 

5

 

2022/04/30 23:43

投稿

退会済みユーザー
test CHANGED
@@ -15,7 +15,7 @@
15
15
  GET: https://script.google.com/macros/s/***/exec?itemname=商品A
16
16
  ```
17
17
 
18
- GAS側:
18
+ GAS側(webアプリとしてデプロイ)
19
19
  ```js
20
20
  function doGet(e) {
21
21
  const itemName = e.parameter.itemname;

4

 

2022/04/30 23:42

投稿

退会済みユーザー
test CHANGED
@@ -9,9 +9,11 @@
9
9
  契約完了時Zapierがスプレッドシートへデータ入力する際に、同時にZapierからGASへ商品名を通知、
10
10
  GAS側でその商品名に応じてメッセージを組み立て、slackへ投げる、というやり方はできるかもしれません。
11
11
 
12
+ Zapier側:
12
- Zapierから、GASのデプロイURLに商品名(itemname)をパラメータに設定してリクエスト
13
+ Zapierから、GASのデプロイURLに商品名(itemname)をパラメータに設定してリクエスト
13
-
14
+ ```
14
15
  GET: https://script.google.com/macros/s/***/exec?itemname=商品A
16
+ ```
15
17
 
16
18
  GAS側:
17
19
  ```js

3

 

2022/04/30 13:00

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,4 @@
1
- Zapierなどの外部ツールによってスプレッドシートに自動入力されるような場合、質問文に記載の記事のように
1
+ Zapierなどの外部ツールによってスプレッドシートに自動入力されるような場合、質問文に記載の記事のように
2
2
  入力された箇所を特定することはできません。
3
3
  (質問文の記事は、ユーザーが手で入力を行った場合が想定されており、このような場合はActiveRangeで変更箇所を特定できる)
4
4
 

2

 

2022/04/30 13:00

投稿

退会済みユーザー
test CHANGED
@@ -9,3 +9,33 @@
9
9
  契約完了時Zapierがスプレッドシートへデータ入力する際に、同時にZapierからGASへ商品名を通知、
10
10
  GAS側でその商品名に応じてメッセージを組み立て、slackへ投げる、というやり方はできるかもしれません。
11
11
 
12
+ ・Zapierから、GASのデプロイURLに商品名(itemname)をパラメータに設定してリクエスト
13
+
14
+ GET: https://script.google.com/macros/s/***/exec?itemname=商品A
15
+
16
+ GAS側:
17
+ ```js
18
+ function doGet(e) {
19
+ const itemName = e.parameter.itemname;
20
+ let message = '';
21
+ if (itemName === '商品A') {
22
+ message = '商品Aが入力されました';
23
+ } else if (itemName === '商品B') {
24
+ message = '商品Bが入力されました';
25
+ }
26
+ const data = {
27
+ username : 'ユーザ名',
28
+ text : message
29
+ };
30
+ const payload = JSON.stringify(data);
31
+
32
+ const options = {
33
+ method : 'post',
34
+ contentType : 'application/json',
35
+ payload : payload
36
+ };
37
+
38
+ // Slackに投稿
39
+ UrlFetchApp.fetch({webhook URL}, options);
40
+ }
41
+ ```

1

 

2022/04/30 12:51

投稿

退会済みユーザー
test CHANGED
@@ -5,5 +5,7 @@
5
5
  ・自動入力の場合、onEdit(編集時)をトリガーにすることもできません。
6
6
  ・onChange(変更時)をトリガーにすることは可能ですが、自動入力されてすぐに発火するわけではなく、ランダムな間隔で発火されます。またonChangeの場合、入力された箇所を特定することもできません。
7
7
 
8
+ GASでWebアプリを作り、
8
- 現状、契約完了時Zapierがスプレッドシートへデータ入力する際に、ZapierからSlack商品名に応じたメッセージを通知する処理も追加してしまうのが一番確実だと思います。
9
+ 契約完了時Zapierがスプレッドシートへデータ入力する際に、同時にZapierからGASへ商品名を通知
10
+ GAS側でその商品名に応じてメッセージを組み立て、slackへ投げる、というやり方はできるかもしれません。
9
11