回答編集履歴
11
修正
test
CHANGED
@@ -38,8 +38,8 @@
|
|
38
38
|
payload : payload
|
39
39
|
};
|
40
40
|
|
41
|
-
// Slackに投稿
|
42
|
-
|
41
|
+
// Slackに投稿 (実際のSlack投稿用Incoming webhook URLに置き換えてください)
|
42
|
+
UrlFetchApp.fetch("https://hooks.slack.com/services/**/**/**", options);
|
43
43
|
|
44
44
|
/*-- 以上Slackへの投稿部分ここまで --*/
|
45
45
|
|
10
test
CHANGED
@@ -86,7 +86,7 @@
|
|
86
86
|

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

|
75
77
|
|
76
78
|
|
@@ -84,10 +86,10 @@
|
|
84
86
|

|
85
87
|
|
86
88
|
|
87
|
-
4. 「URL」に、GASのデプロイURL
|
89
|
+
4. 「URL」に、先ほどコピーしたGASのデプロイURLを入力。
|
88
90
|
「Query string params」の左側boxに「itemname」、右側boxに**GASに渡したいデータ**を指定します。
|
89
|
-
画像で
|
91
|
+
※下の画像で右側boxに入力しているのは例に過ぎません。
|
90
|
-
実際には、Zapierの前のActionでスプレッドシートに自動入力
|
92
|
+
実際には、Zapierの前のActionでスプレッドシートに自動入力しているデータと同じもの(契約時の商品名?)を指定してください。
|
91
93
|

|
92
94
|
|
93
95
|
|
8
test
CHANGED
@@ -80,14 +80,14 @@
|
|
80
80
|
|
81
81
|
|
82
82
|
|
83
|
-
3.Action Eventから「GET」を
|
83
|
+
3.Action Eventから「GET」を選択します。
|
84
84
|

|
85
85
|
|
86
86
|
|
87
|
-
4. 「URL」に、GASのデプロイURL(後述)
|
87
|
+
4. 「URL」に、GASのデプロイURL(後述)を入力。
|
88
|
-
「
|
88
|
+
「Query string params」の左側boxに「itemname」、右側boxに**GASに渡したいデータ**を指定します。
|
89
89
|
画像では、右側boxに入力しているのは、例に過ぎません。
|
90
|
-
実際には、Zapierの前のActionでスプレッドシートに自動入力させているデータと同じもの(商品名
|
90
|
+
実際には、Zapierの前のActionでスプレッドシートに自動入力させているデータと同じもの(契約時の商品名?)を指定してください。
|
91
91
|

|
92
92
|
|
93
93
|
|
7
追記
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
|
-
|
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
|
+

|
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
|
+

|
75
|
+
|
76
|
+
|
77
|
+
|
78
|
+
2.Actionから、「Webhooks by Zapier」を選択します。
|
79
|
+

|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
3.Action Eventから「GET」を指定します。
|
84
|
+

|
85
|
+
|
86
|
+
|
87
|
+
4. 「URL」に、GASのデプロイURL(後述)、
|
88
|
+
「 Query string params」の左側boxに「itemname」、右側boxにGASに渡したいデータを指定します。
|
89
|
+
画像では、右側boxに入力しているのは、例に過ぎません。
|
90
|
+
実際には、Zapierの前のActionでスプレッドシートに自動入力させているデータと同じもの(商品名を含むデータ?)を指定してください。
|
91
|
+

|
92
|
+
|
93
|
+
|
94
|
+
5.「Continue」をクリックし、TEST をクリックします。TESTが完了すればCloseを押して終了です。
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
|
6
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
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
test
CHANGED
@@ -9,9 +9,11 @@
|
|
9
9
|
契約完了時Zapierがスプレッドシートへデータ入力する際に、同時にZapierからGASへ商品名を通知、
|
10
10
|
GAS側でその商品名に応じてメッセージを組み立て、slackへ投げる、というやり方はできるかもしれません。
|
11
11
|
|
12
|
+
Zapier側:
|
12
|
-
|
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
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Zapierなどの外部ツールによってスプレッドシートに自動入力されるような場合、質問文に記載の記事のように
|
1
|
+
Zapierなどの外部ツールによってスプレッドシートに自動入力されるような場合、質問文に記載の記事のように
|
2
2
|
入力された箇所を特定することはできません。
|
3
3
|
(質問文の記事は、ユーザーが手で入力を行った場合が想定されており、このような場合はActiveRangeで変更箇所を特定できる)
|
4
4
|
|
2
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
test
CHANGED
@@ -5,5 +5,7 @@
|
|
5
5
|
・自動入力の場合、onEdit(編集時)をトリガーにすることもできません。
|
6
6
|
・onChange(変更時)をトリガーにすることは可能ですが、自動入力されてすぐに発火するわけではなく、ランダムな間隔で発火されます。またonChangeの場合、入力された箇所を特定することもできません。
|
7
7
|
|
8
|
+
GASでWebアプリを作り、
|
8
|
-
|
9
|
+
契約完了時Zapierがスプレッドシートへデータ入力する際に、同時にZapierからGASへ商品名を通知、
|
10
|
+
GAS側でその商品名に応じてメッセージを組み立て、slackへ投げる、というやり方はできるかもしれません。
|
9
11
|
|