回答編集履歴
5
answer
CHANGED
@@ -94,9 +94,9 @@
|
|
94
94
|
こっちの方が簡単かもしれません。
|
95
95
|
↓↓↓
|
96
96
|
東海エリアシートのトリガーは現状のまま(変更時発火)にしておきます。
|
97
|
-
東海エリアシートの適当なセルに現時点の最終行を記録しておき
|
97
|
+
アイデアとしては、東海エリアシートの適当なセルに現時点の最終行をスクリプトで記録しておき、
|
98
|
-
フォームの回答が
|
98
|
+
フォームの回答が行われて、東海エリアシートの変更イベントが発火したら、
|
99
|
-
変更時点の最終行数と記録していた最終行数を比較して、異なれば東海エリア
|
99
|
+
変更時点の最終行数と記録していた最終行数とを比較して、異なっていれば東海エリアの回答データが追加されたとみなし、グループ通知処理を行う、という流れです。
|
100
100
|
|
101
101
|
[東海エリア]シートのスクリプト
|
102
102
|
```js
|
4
追加
answer
CHANGED
@@ -85,4 +85,36 @@
|
|
85
85
|
・if文で都道府県を判定するのではなく、エリア設定を別のスプレッドシートに入力しておき、複数エリアに対応させる
|
86
86
|
・getValues()を使用して動作速度を速める
|
87
87
|
・getActiveSheetやopenByID 経由ではなく、トリガー関数の引数から回答データを取得する
|
88
|
-
など、御自分で工夫してみて下さい。
|
88
|
+
など、御自分で工夫してみて下さい。
|
89
|
+
|
90
|
+
|
91
|
+
---
|
92
|
+
#別解
|
93
|
+
|
94
|
+
こっちの方が簡単かもしれません。
|
95
|
+
↓↓↓
|
96
|
+
東海エリアシートのトリガーは現状のまま(変更時発火)にしておきます。
|
97
|
+
東海エリアシートの適当なセルに現時点の最終行を記録しておきます。
|
98
|
+
フォームの回答がなされて、シートの変更イベントが発火したら、
|
99
|
+
変更時点の最終行数と記録していた最終行数を比較して、異なれば東海エリアにデータが追加されたとみなしてグループ通知処理を行います。
|
100
|
+
|
101
|
+
[東海エリア]シートのスクリプト
|
102
|
+
```js
|
103
|
+
function SendToGroupLine() {
|
104
|
+
ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
|
105
|
+
// 記録しておいた最終行数を取得
|
106
|
+
oldRowLen = ss.getRange("Z1").getValue();
|
107
|
+
// 現在の最終行数を取得
|
108
|
+
currentRowLen = ss.getLastRow();
|
109
|
+
|
110
|
+
if (oldRowLen != currentRowLen) {
|
111
|
+
|
112
|
+
Logger.log("東海エリアのデータが追加されました")
|
113
|
+
// グループ通知処理
|
114
|
+
|
115
|
+
}
|
116
|
+
// 現在の最終行数をZ1セルに記録
|
117
|
+
ss.getRange("Z1").setValue(currentRowLen);
|
118
|
+
}
|
119
|
+
|
120
|
+
```
|
3
answer
CHANGED
@@ -84,4 +84,5 @@
|
|
84
84
|
たとえば
|
85
85
|
・if文で都道府県を判定するのではなく、エリア設定を別のスプレッドシートに入力しておき、複数エリアに対応させる
|
86
86
|
・getValues()を使用して動作速度を速める
|
87
|
+
・getActiveSheetやopenByID 経由ではなく、トリガー関数の引数から回答データを取得する
|
87
88
|
など、御自分で工夫してみて下さい。
|
2
修正
answer
CHANGED
@@ -76,9 +76,12 @@
|
|
76
76
|
```
|
77
77
|
(上記コード保存後、**フォーム回答の集計元シート**のトリガーに、「フォーム送信時」に下記SendToGroupLine関数を実行するように設定しておく)
|
78
78
|
トリガー設定例
|
79
|
-

|
80
80
|
※東海エリアシート側のトリガー及びスクリプトは不要なので削除しておくこと。残っていると二重に通知が来る。
|
81
81
|
|
82
82
|
--
|
83
83
|
注意:上記コードは最適化する余地がたくさんありますが、理解しやすいように、あえて質問文記載のコードからあまり変えないようにしています。
|
84
|
+
たとえば
|
85
|
+
・if文で都道府県を判定するのではなく、エリア設定を別のスプレッドシートに入力しておき、複数エリアに対応させる
|
86
|
+
・getValues()を使用して動作速度を速める
|
84
|
-
|
87
|
+
など、御自分で工夫してみて下さい。
|
1
修正
answer
CHANGED
@@ -17,12 +17,9 @@
|
|
17
17
|
【具体案】
|
18
18
|
そこで案として、[エリアシート]側ではなく、フォーム回答の集計元シートの側で、フォームから追加された回答データの都道府県を判定し、条件に当てはまる場合のみグループに送信する方法が考えられます。
|
19
19
|
|
20
|
-
|
21
20
|
下記のように、**フォーム回答の集計元シート**のスクリプトに、
|
22
21
|
都道府県を判定して該当する都道府県の場合はフラグをtrueにして送信するコードを記述します。
|
23
22
|
|
24
|
-
(**フォーム回答の集計元シート**のトリガーに、「フォーム送信時」に下記SendToGroupLine関数を実行するように設定しておく)
|
25
|
-
(エリアシート側のトリガー及びスクリプトは不要なので削除しておく)
|
26
23
|
```js
|
27
24
|
// フォーム回答の集計元シートのスクリプト。
|
28
25
|
// 下のSendToGroupLine()にフォーム送信時のトリガーを設定しておく。
|
@@ -77,6 +74,11 @@
|
|
77
74
|
略
|
78
75
|
}
|
79
76
|
```
|
77
|
+
(上記コード保存後、**フォーム回答の集計元シート**のトリガーに、「フォーム送信時」に下記SendToGroupLine関数を実行するように設定しておく)
|
78
|
+
トリガー設定例
|
79
|
+

|
80
|
+
※東海エリアシート側のトリガー及びスクリプトは不要なので削除しておくこと。残っていると二重に通知が来る。
|
80
81
|
|
82
|
+
--
|
81
83
|
注意:上記コードは最適化する余地がたくさんありますが、理解しやすいように、あえて質問文記載のコードからあまり変えないようにしています。
|
82
84
|
勉強が進めていったら最適化してみて下さい。
|