質問編集履歴

3

修正後(現状)

2020/06/27 17:03

投稿

oyatsu8
oyatsu8

スコア97

test CHANGED
File without changes
test CHANGED
@@ -239,3 +239,257 @@
239
239
 
240
240
 
241
241
  ```
242
+
243
+
244
+
245
+ ## 修正後(現状)
246
+
247
+
248
+
249
+ ```GAS
250
+
251
+ //sendMailGoogleForm04
252
+
253
+
254
+
255
+
256
+
257
+ function sendMailGoogleForm() {
258
+
259
+ Logger.log('sendMailGoogleForm() debug start');
260
+
261
+
262
+
263
+ //------------------------------------------------------------
264
+
265
+ // 設定エリアここから
266
+
267
+ //------------------------------------------------------------
268
+
269
+
270
+
271
+ // 件名、本文、フッター
272
+
273
+ var subject = "[件名]";
274
+
275
+ var body
276
+
277
+ = "本文\n\n"
278
+
279
+ + "------------------------------------------------------------\n";
280
+
281
+ var footer
282
+
283
+ = "------------------------------------------------------------\n\n"
284
+
285
+ + "フッター";
286
+
287
+
288
+
289
+ // 入力カラム名の指定
290
+
291
+ var NAME_COL_NAME = '名前';
292
+
293
+ var MAIL_COL_NAME = 'メールアドレス';
294
+
295
+ var SUBJ_COL_NAME = '件名';
296
+
297
+ //メール除外カラム
298
+
299
+ var EXCLUDE_COLS = ['ステータス','対応日時'];
300
+
301
+
302
+
303
+
304
+
305
+ // メール送信先
306
+
307
+ var admin = "メールアドレスm"; // 管理者(必須)
308
+
309
+
310
+
311
+ // スプレッドシートID
312
+
313
+ // URLが「https://docs.google.com/spreadsheets/d/abc1234567/edit#gid=0」だったら「abc1234567」がID
314
+
315
+ var spread_sheet_id = 'ID';
316
+
317
+
318
+
319
+
320
+
321
+
322
+
323
+ //------------------------------------------------------------
324
+
325
+ // 設定エリアここまで
326
+
327
+ //------------------------------------------------------------
328
+
329
+
330
+
331
+ try{
332
+
333
+
334
+
335
+ // スプレッドシートの操作
336
+
337
+
338
+
339
+ var ss = SpreadsheetApp.openById(spread_sheet_id);
340
+
341
+ var sh = ss.getSheetByName('form_ans');//シート名
342
+
343
+ console.log("ファイル名",sh.getName());
344
+
345
+
346
+
347
+ var rows = sh.getLastRow();
348
+
349
+ console.log("rows:",rows);
350
+
351
+
352
+
353
+ var cols = sh.getLastColumn();
354
+
355
+ console.log("cols:",cols);
356
+
357
+
358
+
359
+ var rg = sh.getDataRange();
360
+
361
+ Logger.log("rows="+rows+"cols="+cols);
362
+
363
+
364
+
365
+ //メール件名・本文作成と送信先メールアドレス取得
366
+
367
+ var to = ""; //To:(入力者のアドレスが自動で入ります)
368
+
369
+ for(var j = 1;j<=cols;j++){
370
+
371
+ var col_name = rg.getCell(1,j).getValue(); //カラム名
372
+
373
+ var col_value = rg.getCell(rows,j).getValue(); //入力値
374
+
375
+ //メール用変換
376
+
377
+ if(col_name === NAME_COL_NAME){
378
+
379
+ body = col_value + "様\n\n"+body;
380
+
381
+ }
382
+
383
+ if(col_name === MAIL_COL_NAME){
384
+
385
+ to = col_value;
386
+
387
+ }
388
+
389
+ if(col_name === SUBJ_COL_NAME){
390
+
391
+ subject += col_value;
392
+
393
+ }
394
+
395
+ //日付フォーマットの変換
396
+
397
+ //他にも変換したいカラムがある場合はこのif文をコピーしてカラム名・日付フォーマットを変更する
398
+
399
+ if(col_name === 'タイムスタンプ'){
400
+
401
+ col_value = Utilities.formatDate(col_value,"JST","yyyy-MM-dd HH:mm:ss");
402
+
403
+ }
404
+
405
+ //メール送信除外カラム
406
+
407
+ if(EXCLUDE_COLS.length > 0){
408
+
409
+ is_exclude = false;
410
+
411
+ for(var k = 0;k<EXCLUDE_COLS.length;k++){
412
+
413
+ if(col_name === EXCLUDE_COLS[k]){
414
+
415
+ is_exclude = true;
416
+
417
+ break;
418
+
419
+ }
420
+
421
+ }
422
+
423
+ if(is_exclude){
424
+
425
+ //除外カラムなのでスキップ
426
+
427
+ continue;
428
+
429
+ }
430
+
431
+ }
432
+
433
+ //メール本文に追加
434
+
435
+ body += "["+col_name+"]\n";
436
+
437
+ body += col_value + "\n\n";
438
+
439
+ }
440
+
441
+
442
+
443
+ body += footer;
444
+
445
+ /*ユーザー宛送信*/
446
+
447
+ //送信オプション
448
+
449
+ var options = {};
450
+
451
+ if(admin)options.replyTo = admin;
452
+
453
+ //メール送信
454
+
455
+ if(to){
456
+
457
+ MailApp.sendEmail(to,subject,body,options);
458
+
459
+ }else{
460
+
461
+ MailApp.sendEmail(admin,"[失敗]Googleフォームにメールアドレスが指定されていません",body);
462
+
463
+ }
464
+
465
+
466
+
467
+ /*管理者宛送信*/
468
+
469
+ //送信先オプション
470
+
471
+ var options = {};
472
+
473
+ if(to)options.replyTo = to;
474
+
475
+ //連続で送るとエラーになるので1秒スリープ
476
+
477
+ Utilities.sleep(1000);
478
+
479
+ MailApp.sendEmail(admin,subject,body,options);
480
+
481
+
482
+
483
+
484
+
485
+ }catch(e){
486
+
487
+ MailApp.sendEmail(admin,"[失敗]Googleフォームからメール送信中にエラーが発生",e.message);
488
+
489
+ }
490
+
491
+ }
492
+
493
+
494
+
495
+ ```

2

追記をした

2020/06/27 17:03

投稿

oyatsu8
oyatsu8

スコア97

test CHANGED
File without changes
test CHANGED
@@ -68,7 +68,13 @@
68
68
 
69
69
 
70
70
 
71
- また、よくわからなかったのが、シート名は回答フォームからスプレッドシートを開いた時のシートのタイトルだと思ったのですが、もしかして違うのでしょうか、
71
+ また、よくわからなかったのが、シート名は回答フォームからスプレッドシートを開いた時のシートのタイトルだと思ったのですが、もしかして違うのでしょうか、この質問をみたのですが、
72
+
73
+ [https://teratail.com/questions/189952](https://teratail.com/questions/189952)
74
+
75
+ sheetNameが何を指すのかがわからず、、
76
+
77
+
72
78
 
73
79
  色々理解しきれていませんが、アドバイスを頂けると助かります。
74
80
 

1

追記やってみたこと

2020/06/27 05:54

投稿

oyatsu8
oyatsu8

スコア97

test CHANGED
File without changes
test CHANGED
@@ -44,16 +44,38 @@
44
44
 
45
45
 
46
46
 
47
+ ## やってみたこと
48
+
49
+
50
+
51
+ もしかして、
52
+
53
+ var sheet = SpreadsheetApp.getActiveSheet();
54
+
55
+
56
+
57
+ var rows = sheet.getLastRow();
58
+
59
+ の間にgetSheetName("フォームのタイトル(日本語)")の処理が必要だったのかもしれないと思いいれて見ましたが、
60
+
61
+ 別のエラー
62
+
63
+ "パラメータ(String)が SpreadsheetApp.Sheet.getSheetName のメソッドのシグネ
64
+
65
+ チャと一致しません。"
66
+
67
+ と出ました、、
68
+
69
+
70
+
71
+ また、よくわからなかったのが、シート名は回答フォームからスプレッドシートを開いた時のシートのタイトルだと思ったのですが、もしかして違うのでしょうか、
72
+
73
+ 色々理解しきれていませんが、アドバイスを頂けると助かります。
74
+
75
+
76
+
47
77
  ---
48
78
 
49
-
50
-
51
-
52
-
53
-
54
-
55
-
56
-
57
79
  ## ソースコード全体
58
80
 
59
81
  ```Google Apps Script