質問編集履歴

6

書式の改善

2021/01/13 06:13

投稿

kana2hk
kana2hk

スコア1

test CHANGED
File without changes
test CHANGED
@@ -48,6 +48,8 @@
48
48
 
49
49
 
50
50
 
51
+ ```ここに言語を入力
52
+
51
53
  function my_update() {
52
54
 
53
55
 
@@ -288,6 +290,8 @@
288
290
 
289
291
  }
290
292
 
293
+ ```
294
+
291
295
 
292
296
 
293
297
 

5

こうではないかと思う式に変えてみました

2021/01/13 06:12

投稿

kana2hk
kana2hk

スコア1

test CHANGED
File without changes
test CHANGED
@@ -194,13 +194,9 @@
194
194
 
195
195
  // 最初の質問で答えが「出張」だったら2~5、「会議だったら」6~9を本文に入れるif文
196
196
 
197
-
198
-
199
-
200
-
201
197
  if (TITLE==="どっちにしますか?") {
202
198
 
203
- if (ans==="出張") {
199
+ if (rows==="出張") {
204
200
 
205
201
  for (var j = 2; j <= 5; j++ ) {
206
202
 
@@ -216,7 +212,7 @@
216
212
 
217
213
 
218
214
 
219
- } else if (ans==="会議") {
215
+ } else if (rows==="会議") {
220
216
 
221
217
  for (var j = 6; j <= 9; j++ ) {
222
218
 
@@ -238,7 +234,7 @@
238
234
 
239
235
  cc = sheet_form.getRange(rows,15).getValue();
240
236
 
241
-
237
+
242
238
 
243
239
 
244
240
 

4

不要なメモの削除

2021/01/13 06:00

投稿

kana2hk
kana2hk

スコア1

test CHANGED
File without changes
test CHANGED
@@ -238,19 +238,7 @@
238
238
 
239
239
  cc = sheet_form.getRange(rows,15).getValue();
240
240
 
241
-
242
-
243
- }
241
+
244
-
245
- /* for (var j = 1; j <= 4; j++ ) {
246
-
247
- var col_name = rg.getCell(1, j).getValue(); // カラム名
248
-
249
- var col_value = rg.getCell(rows, j).getValue(); // 入力値
250
-
251
- body += "▼"+col_name+"\n";
252
-
253
- body += col_value + "\n\n"; */
254
242
 
255
243
 
256
244
 

3

ご指摘の通り、省略せずに記載しました。URLをリンクにしました。

2021/01/13 00:42

投稿

kana2hk
kana2hk

スコア1

test CHANGED
@@ -1 +1 @@
1
- GAS Gフォームで分岐がある場合の自動送信メールの本文の出し分け方法
1
+ gGAS Gフォームで分岐がある場合の自動送信メールの本文の出し分け方法
test CHANGED
@@ -30,7 +30,7 @@
30
30
 
31
31
  if文を挿入すればよいと考え、次のようにコードを書いたのですが、
32
32
 
33
- else にエラー出てしまい動きません。
33
+ 本文ません。
34
34
 
35
35
  if文をどう入れたらよいか、そもそも分岐の回答をどう定義してよいか
36
36
 
@@ -48,11 +48,75 @@
48
48
 
49
49
 
50
50
 
51
- 上部省略しています。
51
+ function my_update() {
52
+
53
+
54
+
52
-
55
+ var userLock = LockService.getUserLock();
56
+
53
-
57
+ // ユーザに対してLockがかかっているかチェック
58
+
54
-
59
+ if (userLock.tryLock(5000)) {
60
+
61
+ var ss = SpreadsheetApp.getActiveSpreadsheet();
62
+
63
+ var sheet = ss.getSheets()[0];
64
+
65
+
66
+
67
+ // Lockかけた状態のまま5秒待つ
68
+
69
+ Utilities.sleep(5000);
70
+
71
+
72
+
73
+ var ss = SpreadsheetApp.getActiveSpreadsheet();
74
+
75
+ var sheet_form = ss.getSheetByName("回答"); // スプレッドシート 「回答」シートopen
76
+
77
+ var get_title = sheet_form.getRange("J2:J").getValues(); //タイムスタンプを全部読み込み
78
+
79
+  var rows = sheet_form.getLastRow(); // 最終行の読み込み(フォームに入力されたものは最終行に挿入されるため)
80
+
81
+ var EVENTDAY1_Copy = sheet_form.getRange(1,3); // 出張日時の1行目の計算式をコピー
82
+
83
+ var EVENTDAY2_Copy = sheet_form.getRange(1,7); // 会議日時の1行目の計算式をコピー
84
+
85
+ var To_Copy = sheet_form.getRange(1,14);// 1行目の計算式をコピー
86
+
87
+ var CC_Copy = sheet_form.getRange(1,15);// 1行目の計算式をコピー
88
+
89
+ var ToNAME_Copy = sheet_form.getRange(1,16);// 1行目の計算式をコピー
90
+
91
+ var FromNAME_Copy = sheet_form.getRange(1,17);// 1行目の計算式をコピー
92
+
93
+ for (var j = 2; j <= rows; j++ ) {
94
+
95
+ EVENTDAY1_Copy.copyTo(sheet_form.getRange(j,3));
96
+
97
+ EVENTDAY2_Copy.copyTo(sheet_form.getRange(j,7));
98
+
99
+ To_Copy.copyTo(sheet_form.getRange(j,14));
100
+
101
+ CC_Copy.copyTo(sheet_form.getRange(j,15));
102
+
103
+ ToNAME_Copy.copyTo(sheet_form.getRange(j,16));
104
+
105
+ FromNAME_Copy.copyTo(sheet_form.getRange(j,17));
106
+
107
+ }                                // 1行目の計算式を最終行まで貼り付け
108
+
109
+ var To_NAME = sheet_form.getRange(rows,14).getValue();
110
+
111
+ var CC_NAME = sheet_form.getRange(rows,15).getValue();
112
+
113
+ var TITLE = sheet_form.getRange(rows,1).getValue();
114
+
115
+
116
+
117
+
118
+
55
- //------------------------------------------------------------
119
+ //------------------------------------------------------------
56
120
 
57
121
  // 設定エリアここから
58
122
 
@@ -62,19 +126,27 @@
62
126
 
63
127
  // 件名、本文、フッター
64
128
 
65
- var NAME = sheet_form.getRange(rows,2).getValue();
129
+ var NAME1 = sheet_form.getRange(rows,2).getValue();
66
-
130
+
67
- var EVENTDAY = sheet_form.getRange(rows,3).getValue();
131
+ var EVENTDAY1 = sheet_form.getRange(rows,3).getValue();
68
-
132
+
69
- var PLACE = sheet_form.getRange(rows,4).getValue();
133
+ var PLACE1 = sheet_form.getRange(rows,4).getValue();
70
-
134
+
71
- var PURPOSE = sheet_form.getRange(rows,5).getValue();
135
+ var PURPOSE1 = sheet_form.getRange(rows,5).getValue();
136
+
72
-
137
+ var NAME2 = sheet_form.getRange(rows,6).getValue();
138
+
139
+ var EVENTDAY2 = sheet_form.getRange(rows,7).getValue();
140
+
141
+ var PLACE2 = sheet_form.getRange(rows,8).getValue();
142
+
143
+ var PURPOSE2 = sheet_form.getRange(rows,9).getValue();
144
+
73
- var ToNAME = sheet_form.getRange(rows,10).getValue();
145
+ var ToNAME = sheet_form.getRange(rows,16).getValue();
74
-
146
+
75
- var FromNAME = sheet_form.getRange(rows,11).getValue();
147
+ var FromNAME = sheet_form.getRange(rows,17).getValue();
76
-
148
+
77
- var subject = "
149
+ var subject = "申請 "+EVENTDAY1+"/"+NAME1;
78
150
 
79
151
  var body
80
152
 
@@ -90,7 +162,7 @@
90
162
 
91
163
  // メール送信先
92
164
 
93
- var admin = "~~~~~~~@~~~~~~"; // 管理者(必須)
165
+ var admin = "~~~~@~~~~jp"; // 管理者(必須)
94
166
 
95
167
  var cc = CC_NAME; // Cc:
96
168
 
@@ -120,15 +192,57 @@
120
192
 
121
193
  // メール件名・本文作成と送信先メールアドレス取得
122
194
 
123
-     // 最初の質問で答えが「出張」だったら2~5、「会議だったら」6~9を本文に入れるif文
195
+ // 最初の質問で答えが「出張」だったら2~5、「会議だったら」6~9を本文に入れるif文
124
-
125
-
126
-
196
+
197
+
198
+
199
+
200
+
127
- if (title==="どっちにしますか?") {
201
+ if (TITLE==="どっちにしますか?") {
128
-
202
+
129
- if (ans==="出張") {
203
+ if (ans==="出張") {
130
-
204
+
131
- for (var j = 2; j <= 5; j++ ) {
205
+ for (var j = 2; j <= 5; j++ ) {
206
+
207
+ var col_name = rg.getCell(1, j).getValue(); // カラム名
208
+
209
+ var col_value = rg.getCell(rows, j).getValue(); // 入力値
210
+
211
+ body += "▼" + col_name + "\n";
212
+
213
+ body += col_value + "\n\n";
214
+
215
+ }
216
+
217
+
218
+
219
+ } else if (ans==="会議") {
220
+
221
+ for (var j = 6; j <= 9; j++ ) {
222
+
223
+ var col_name = rg.getCell(1, j).getValue(); // カラム名
224
+
225
+ var col_value = rg.getCell(rows, j).getValue(); // 入力値
226
+
227
+ body += "▼"+col_name+"\n";
228
+
229
+ body += col_value + "\n\n";
230
+
231
+
232
+
233
+ }
234
+
235
+ }
236
+
237
+ body += footer;
238
+
239
+ cc = sheet_form.getRange(rows,15).getValue();
240
+
241
+
242
+
243
+ }
244
+
245
+ /* for (var j = 1; j <= 4; j++ ) {
132
246
 
133
247
  var col_name = rg.getCell(1, j).getValue(); // カラム名
134
248
 
@@ -136,68 +250,46 @@
136
250
 
137
251
  body += "▼"+col_name+"\n";
138
252
 
139
- body += col_value + "\n\n";
253
+ body += col_value + "\n\n"; */
254
+
255
+
256
+
140
-
257
+ // 送信先オプション
141
-
142
-
258
+
143
- } else if (ans==="会議") {
259
+ var options = {};
144
-
260
+
145
- for (var j = 6; j <= 9; j++ ) {
261
+ if( cc ) options.cc = CC_NAME;
146
-
147
- var col_name = rg.getCell(1, j).getValue(); // カラム名
262
+
148
-
149
- var col_value = rg.getCell(rows, j).getValue(); // 入力値
150
-
151
- body += "▼"+col_name+"\n";
152
-
153
- body += col_value + "\n\n";
263
+ var lock = LockService.getUserLock();
264
+
154
-
265
+ if (lock.tryLock(10000)) {
266
+
155
-
267
+ try {
268
+
269
+
270
+
271
+ // メール送信
272
+
273
+ if ( to ) {
274
+
275
+ MailApp.sendEmail(to, subject, body, options);
276
+
277
+ } } finally {
278
+
279
+
280
+
281
+ //最期に必ずロックを開放する
282
+
283
+ lock.releaseLock();
284
+
285
+ }
286
+
287
+ }else{
288
+
289
+ MailApp.sendEmail(admin, "【失敗】Googleフォームにメールアドレスが指定されていません", body);
156
290
 
157
291
  }
158
292
 
159
- body += footer;
160
-
161
-     cc = sheet_form.getRange(rows,9).getValue();
162
-
163
-
164
-
165
- // 送信先オプション
166
-
167
- var options = {};
168
-
169
- if( cc ) options.cc = CC_NAME;
170
-
171
- var lock = LockService.getUserLock();
172
-
173
- if (lock.tryLock(10000)) {
174
-
175
- try {
176
-
177
-
178
-
179
- // メール送信
180
-
181
- if ( to ) {
182
-
183
- MailApp.sendEmail(to, subject, body, options);
184
-
185
- } } finally {
186
-
187
-
188
-
189
- //最期に必ずロックを開放する
190
-
191
- lock.releaseLock();
192
-
193
- }
194
-
195
- }else{
196
-
197
- MailApp.sendEmail(admin, "【失敗】Googleフォームにメールアドレスが指定されていません", body);
198
-
199
- }
200
-
201
293
  }catch(e){
202
294
 
203
295
  MailApp.sendEmail(admin, "【失敗】Googleフォームからメール送信中にエラーが発生", e.message);
@@ -214,13 +306,15 @@
214
306
 
215
307
 
216
308
 
309
+
310
+
217
311
  ### 試したこと
218
312
 
219
313
 
220
314
 
221
315
  ・もともとのスクリプトはこちらを参考にして作りました。
222
316
 
223
-  https://liapoc.com/new-google-form.html
317
+  [https://liapoc.com/new-google-form.html](https://liapoc.com/new-google-form.html)
224
318
 
225
319
 
226
320
 
@@ -228,7 +322,7 @@
228
322
 
229
323
   elseがエラーと言われるなど、上手く動きませんでした。
230
324
 
231
-  https://excel-ubara.com/apps_script1/GAS010.html
325
+  [https://excel-ubara.com/apps_script1/GAS010.html](https://excel-ubara.com/apps_script1/GAS010.html)
232
326
 
233
327
 
234
328
 
@@ -238,4 +332,14 @@
238
332
 
239
333
 
240
334
 
241
- 分岐がない状態では正常に動作しています。
335
+ 分岐がない状態では正常に動作しています。
336
+
337
+
338
+
339
+ ・Lockは、同時に複数名の方が投稿した際にエラーになることが多かったために[こちらなど](https://gist.github.com/xl1/6d5f120c42be56b215f1)を参考にして入れました。問題なく機能していると思っています。
340
+
341
+
342
+
343
+ ・EVENTDAY1、EVENTDAY2は日時の表記を整えるために、フォームで投稿された状態から数式で変換し直した列を採用するようにコードを書いています。
344
+
345
+ (2021/01/28→1/28 (木)のように)

2

誤字修正

2021/01/13 00:36

投稿

kana2hk
kana2hk

スコア1

test CHANGED
File without changes
test CHANGED
@@ -10,9 +10,9 @@
10
10
 
11
11
 
12
12
 
13
- 「出張」を選んだ場合、件名は「出張の件」、本文はスプレッドシートの2~5目を、
13
+ 「出張」を選んだ場合、件名は「出張の件」、本文はスプレッドシートの2~5目を、
14
-
14
+
15
- 「会議」を選んだ場合、件名は「会議の件」、本文はスプレッドシートの6~9目を、
15
+ 「会議」を選んだ場合、件名は「会議の件」、本文はスプレッドシートの6~9目を、
16
16
 
17
17
  それぞれ挿入したいです。
18
18
 

1

誤字修正

2021/01/12 06:56

投稿

kana2hk
kana2hk

スコア1

test CHANGED
File without changes
test CHANGED
@@ -120,7 +120,7 @@
120
120
 
121
121
  // メール件名・本文作成と送信先メールアドレス取得
122
122
 
123
-     // 最初の質問で答えが「出張」だったら14、「会議だったら」5~9を本文に入れるif文
123
+     // 最初の質問で答えが「出張」だったら25、「会議だったら」6~9を本文に入れるif文
124
124
 
125
125
 
126
126