teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

誤字

2020/02/13 06:07

投稿

renren.778899
renren.778899

スコア7

title CHANGED
File without changes
body CHANGED
@@ -56,7 +56,7 @@
56
56
 
57
57
  // -------------------------------------- 定義----------------------
58
58
  var Spreadsheet = SpreadsheetApp.openById("abcdefgh1234567890");
59
- var sheet = Spreadsheet.getSheetByName("フォームの回答 4");   //スプレッドとシートの指定
59
+ var sheet = Spreadsheet.getSheetByName("メールフォーム");   //スプレッドとシートの指定
60
60
  var ss = Spreadsheet.getSheetByName("宛先リスト");
61
61
  var atesaki = ss.getRange(3,2).getValue();                              //宛先の指定
62
62
  // var atesaki2 = ss.getRange(4,2).getValue();
@@ -89,7 +89,7 @@
89
89
 
90
90
  try{
91
91
  // スプレッドシートの操作
92
- var sheet = Spreadsheet.getSheetByName("フォームの回答 4"); 
92
+ var sheet = Spreadsheet.getSheetByName("メールフォーム"); 
93
93
  var rows = sheet.getRange(1, 1).getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow();
94
94
  var cols = sheet.getLastColumn();
95
95
  var rg = sheet.getDataRange();

2

誤字

2020/02/13 06:07

投稿

renren.778899
renren.778899

スコア7

title CHANGED
File without changes
body CHANGED
@@ -35,16 +35,19 @@
35
35
  →同内容のメールが二通送信される。
36
36
 
37
37
 
38
+ ```
39
+ function onFormSubmit() {
38
- ``` Logger.log('sendMailGoogleForm() debug start');
40
+ Logger.log('sendMailGoogleForm() debug start');
41
+ }
39
42
 
40
- var lock = LockService.getDocumentLock();
43
+ var lock = LockService.getDocumentLock();//ロック
41
44
  try {
42
- lock.waitLock(30000);
45
+ lock.waitLock(30000);//30秒待つ
43
46
 
44
47
  // メール送信先
45
- var admin = "○○○@××.co.jp"; // 管理者アドレス
48
+ var admin = "○○○@○○○○.co.jp"; // 管理者(必須)→管理者アドレス
46
49
  var sendername = "管理者";//送信者名(必須)
47
- var cc = "○○○@××.co.jp"; //
50
+ var cc = "○○○@○○○○.co.jp"; //
48
51
  var bcc = admin; // Bcc:
49
52
  var reply = admin; // Reply-To:
50
53
  var to = ''; // To: (入力者のアドレスが自動で入ります)
@@ -52,8 +55,8 @@
52
55
  var day = Utilities.formatDate(d,'JST', 'M/dd');
53
56
 
54
57
  // -------------------------------------- 定義----------------------
55
- var Spreadsheet = SpreadsheetApp.openById("abcdefgh0123456789");
58
+ var Spreadsheet = SpreadsheetApp.openById("abcdefgh1234567890");
56
- var sheet = Spreadsheet.getSheetByName("メールフォーム");   //スプレッドとシートの指定
59
+ var sheet = Spreadsheet.getSheetByName("フォームの回答 4");   //スプレッドとシートの指定
57
60
  var ss = Spreadsheet.getSheetByName("宛先リスト");
58
61
  var atesaki = ss.getRange(3,2).getValue();                              //宛先の指定
59
62
  // var atesaki2 = ss.getRange(4,2).getValue();
@@ -63,29 +66,30 @@
63
66
  Logger.log("rows="+rows+" cols="+cols);
64
67
  var tenpo = sheet.getRange(rows, 5).getValue();  //件名に店舗名
65
68
  var name = sheet.getRange(rows, 6).getValue(); //件名に氏名
66
-
67
69
  // ----------------------------------------------------------------
70
+
68
71
  // 設定エリアここから
69
72
  //------------------------------------------------------------
70
-
73
+
71
74
  + "------------------------------------------------------------\n";
72
75
  // 件名、本文、フッター
73
-
76
+
74
77
  var subject = "【日報】【"+day+"】"+tenpo+"/"+name+""; 
75
- var body = "\n本日の実績報告となります。\n\n"//
78
+ var body = "※本メールは自動配信となります。\n\n各位\n\nお疲れ様です。\n本日の実績報告となります。\n\n"//
76
79
  var footer = "------------------------------------------------------------\n\n" + "以上、よろしくお願いいたします。";//
77
80
 
78
81
  // 入力カラム名の指定
79
82
  var NAME_COL_NAME = '名前';
80
83
  var MAIL_COL_NAME = 'メールアドレス';
81
-
84
+
82
85
  //------------------------------------------------------------
83
86
  // 設定エリアここまで
84
87
  //------------------------------------------------------------
88
+
85
89
 
86
90
  try{
87
91
  // スプレッドシートの操作
88
- var sheet = Spreadsheet.getSheetByName("メールフォーム"); 
92
+ var sheet = Spreadsheet.getSheetByName("フォームの回答 4"); 
89
93
  var rows = sheet.getRange(1, 1).getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow();
90
94
  var cols = sheet.getLastColumn();
91
95
  var rg = sheet.getDataRange();
@@ -95,10 +99,19 @@
95
99
  for (var i = 1; i <= cols; i++ ) {
96
100
  var col_name = rg.getCell(1, i).getValue(); // カラム名
97
101
  var col_value = rg.getCell(rows, i).getValue(); // 入力値
98
-
102
+
99
103
  if (col_name === "タイムスタンプ"){
100
104
  continue;}
105
+
101
-
106
+ if (col_name === "日付"){
107
+ continue;}
108
+
109
+ if (col_name === "(集計用)当月"){
110
+ continue;}
111
+
112
+ if (col_name === "(内訳)購入サポートから"){
113
+ continue;}
114
+
102
115
  body += col_name + "\n";
103
116
  body += col_value + "\n\n";
104
117
  if ( col_name === NAME_COL_NAME ) {
@@ -124,9 +137,7 @@
124
137
  }
125
138
  }catch(e){
126
139
  MailApp.sendEmail(admin, "【失敗】Googleフォームからメール送信中にエラーが発生", e.message);
127
- }
140
+ }
128
-   lock.releaseLock();//ロック解除
129
- }
130
141
   } catch (e) {
131
142
  //ロック取得できなかった時の処理等を記述する
132
143
  var checkword = "ロックのタイムアウト: 別のプロセスがロックを保持している時間が長すぎました。";
@@ -144,6 +155,6 @@
144
155
  //ロックを開放する
145
156
  lock.releaseLock();
146
157
  }
147
- }
158
+
148
159
  コード
149
160
  ```

1

ご教示頂いたコードを追加した

2020/02/13 05:32

投稿

renren.778899
renren.778899

スコア7

title CHANGED
File without changes
body CHANGED
@@ -30,10 +30,16 @@
30
30
  乱文大変申し訳ございません。。
31
31
  どうかよろしくお願いします。
32
32
 
33
+ 【2/13追記】
34
+ waitlockでtry~cachの構文にしてみましたが、症状は改善されませんでした。
35
+ →同内容のメールが二通送信される。
36
+
37
+
33
38
  ``` Logger.log('sendMailGoogleForm() debug start');
34
39
 
35
- var lock = LockService.getScriptLock();//排他制御
40
+ var lock = LockService.getDocumentLock();
41
+ try {
36
- lock.waitLock(30000);//30秒待
42
+ lock.waitLock(30000);
37
43
 
38
44
  // メール送信先
39
45
  var admin = "○○○@××.co.jp"; // 管理者アドレス
@@ -121,6 +127,23 @@
121
127
  }
122
128
    lock.releaseLock();//ロック解除
123
129
  }
124
-
130
+  } catch (e) {
131
+ //ロック取得できなかった時の処理等を記述する
132
+ var checkword = "ロックのタイムアウト: 別のプロセスがロックを保持している時間が長すぎました。";
133
+
134
+ //通常のエラーとロックエラーを区別する
135
+ if(e.message == checkword){
136
+ //ロックエラーの場合
137
+ msg = "誰かまだ使ってるみたい";
138
+ }else{
139
+ //ソレ以外のエラーの場合
140
+ msg = e.message;
141
+ }  
142
+
143
+ } finally {
144
+ //ロックを開放する
145
+ lock.releaseLock();
146
+ }
147
+ }
125
148
  コード
126
149
  ```