回答編集履歴

5

2021/08/20 12:56

投稿

退会済みユーザー
test CHANGED
@@ -190,11 +190,11 @@
190
190
 
191
191
  東海エリアシートのトリガーは現状のまま(変更時発火)にしておきます。
192
192
 
193
- 東海エリアシートの適当なセルに現時点の最終行を記録しておきます。
193
+ アイデアとしては、東海エリアシートの適当なセルに現時点の最終行をスクリプトで記録しておき
194
-
194
+
195
- フォームの回答がなされて、シートの変更イベントが発火したら、
195
+ フォームの回答が行われて、東海エリアシートの変更イベントが発火したら、
196
-
196
+
197
- 変更時点の最終行数と記録していた最終行数を比較して、異なれば東海エリアデータが追加されたとみなしグループ通知処理を行いす。
197
+ 変更時点の最終行数と記録していた最終行数を比較して、異なっていれば東海エリアの回答データが追加されたとみなしグループ通知処理を行う、とう流れです。
198
198
 
199
199
 
200
200
 

4

追加

2021/08/20 12:56

投稿

退会済みユーザー
test CHANGED
@@ -173,3 +173,67 @@
173
173
  ・getActiveSheetやopenByID 経由ではなく、トリガー関数の引数から回答データを取得する
174
174
 
175
175
  など、御自分で工夫してみて下さい。
176
+
177
+
178
+
179
+
180
+
181
+ ---
182
+
183
+ #別解
184
+
185
+
186
+
187
+ こっちの方が簡単かもしれません。
188
+
189
+ ↓↓↓
190
+
191
+ 東海エリアシートのトリガーは現状のまま(変更時発火)にしておきます。
192
+
193
+ 東海エリアシートの適当なセルに現時点の最終行を記録しておきます。
194
+
195
+ フォームの回答がなされて、シートの変更イベントが発火したら、
196
+
197
+ 変更時点の最終行数と記録していた最終行数を比較して、異なれば東海エリアにデータが追加されたとみなしてグループ通知処理を行います。
198
+
199
+
200
+
201
+ [東海エリア]シートのスクリプト
202
+
203
+ ```js
204
+
205
+ function SendToGroupLine() {
206
+
207
+ ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
208
+
209
+ // 記録しておいた最終行数を取得
210
+
211
+ oldRowLen = ss.getRange("Z1").getValue();
212
+
213
+ // 現在の最終行数を取得
214
+
215
+ currentRowLen = ss.getLastRow();
216
+
217
+
218
+
219
+ if (oldRowLen != currentRowLen) {
220
+
221
+
222
+
223
+ Logger.log("東海エリアのデータが追加されました")
224
+
225
+ // グループ通知処理
226
+
227
+
228
+
229
+ }
230
+
231
+ // 現在の最終行数をZ1セルに記録
232
+
233
+ ss.getRange("Z1").setValue(currentRowLen);
234
+
235
+ }
236
+
237
+
238
+
239
+ ```

3

2021/08/20 12:38

投稿

退会済みユーザー
test CHANGED
@@ -170,4 +170,6 @@
170
170
 
171
171
  ・getValues()を使用して動作速度を速める
172
172
 
173
+ ・getActiveSheetやopenByID 経由ではなく、トリガー関数の引数から回答データを取得する
174
+
173
175
  など、御自分で工夫してみて下さい。

2

修正

2021/08/20 12:03

投稿

退会済みユーザー
test CHANGED
@@ -154,7 +154,7 @@
154
154
 
155
155
  トリガー設定例
156
156
 
157
- ![イメージ説明](675bf3578601f6501069e4a81ddcf3e1.png)
157
+ ![イメージ説明](6a4d5485e9057c3eb70df757c9d8d9bd.png)
158
158
 
159
159
  ※東海エリアシート側のトリガー及びスクリプトは不要なので削除しておくこと。残っていると二重に通知が来る。
160
160
 
@@ -164,4 +164,10 @@
164
164
 
165
165
  注意:上記コードは最適化する余地がたくさんありますが、理解しやすいように、あえて質問文記載のコードからあまり変えないようにしています。
166
166
 
167
+ たとえば
168
+
169
+ ・if文で都道府県を判定するのではなく、エリア設定を別のスプレッドシートに入力しておき、複数エリアに対応させる
170
+
171
+ ・getValues()を使用して動作速度を速める
172
+
167
- 勉強が進めていったら最適化してみて下さい。
173
+ など、御自分で工夫してみて下さい。

1

修正

2021/08/20 12:01

投稿

退会済みユーザー
test CHANGED
@@ -36,17 +36,11 @@
36
36
 
37
37
   
38
38
 
39
-
40
-
41
39
  下記のように、**フォーム回答の集計元シート**のスクリプトに、
42
40
 
43
41
  都道府県を判定して該当する都道府県の場合はフラグをtrueにして送信するコードを記述します。
44
42
 
45
43
 
46
-
47
- (**フォーム回答の集計元シート**のトリガーに、「フォーム送信時」に下記SendToGroupLine関数を実行するように設定しておく)
48
-
49
- (エリアシート側のトリガー及びスクリプトは不要なので削除しておく)
50
44
 
51
45
  ```js
52
46
 
@@ -156,7 +150,17 @@
156
150
 
157
151
  ```
158
152
 
153
+ (上記コード保存後、**フォーム回答の集計元シート**のトリガーに、「フォーム送信時」に下記SendToGroupLine関数を実行するように設定しておく)
159
154
 
155
+ トリガー設定例
156
+
157
+ ![イメージ説明](675bf3578601f6501069e4a81ddcf3e1.png)
158
+
159
+ ※東海エリアシート側のトリガー及びスクリプトは不要なので削除しておくこと。残っていると二重に通知が来る。
160
+
161
+
162
+
163
+ --
160
164
 
161
165
  注意:上記コードは最適化する余地がたくさんありますが、理解しやすいように、あえて質問文記載のコードからあまり変えないようにしています。
162
166