質問編集履歴
6
書式の改善
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
こうではないかと思う式に変えてみました
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 (
|
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 (
|
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
不要なメモの削除
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をリンクにしました。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
GAS Gフォームで分岐がある場合の自動送信メールの本文の出し分け方法
|
1
|
+
gGAS Gフォームで分岐がある場合の自動送信メールの本文の出し分け方法
|
test
CHANGED
@@ -30,7 +30,7 @@
|
|
30
30
|
|
31
31
|
if文を挿入すればよいと考え、次のようにコードを書いたのですが、
|
32
32
|
|
33
|
-
|
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,1
|
145
|
+
var ToNAME = sheet_form.getRange(rows,16).getValue();
|
74
|
-
|
146
|
+
|
75
|
-
var FromNAME = sheet_form.getRange(rows,1
|
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
|
-
|
195
|
+
// 最初の質問で答えが「出張」だったら2~5、「会議だったら」6~9を本文に入れるif文
|
124
|
-
|
125
|
-
|
126
|
-
|
196
|
+
|
197
|
+
|
198
|
+
|
199
|
+
|
200
|
+
|
127
|
-
if (
|
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
|
-
|
259
|
+
var options = {};
|
144
|
-
|
260
|
+
|
145
|
-
|
261
|
+
if( cc ) options.cc = CC_NAME;
|
146
|
-
|
147
|
-
|
262
|
+
|
148
|
-
|
149
|
-
var col_value = rg.getCell(rows, j).getValue(); // 入力値
|
150
|
-
|
151
|
-
body += "▼"+col_name+"\n";
|
152
|
-
|
153
|
-
|
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
誤字修正
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
誤字修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -120,7 +120,7 @@
|
|
120
120
|
|
121
121
|
// メール件名・本文作成と送信先メールアドレス取得
|
122
122
|
|
123
|
-
// 最初の質問で答えが「出張」だったら
|
123
|
+
// 最初の質問で答えが「出張」だったら2~5、「会議だったら」6~9を本文に入れるif文
|
124
124
|
|
125
125
|
|
126
126
|
|