回答編集履歴

5

修正

2021/11/28 15:16

投稿

退会済みユーザー
test CHANGED
@@ -56,6 +56,10 @@
56
56
 
57
57
  let todoTask = '';
58
58
 
59
+ // 締切3日前の未対応案件を追記する変数
60
+
61
+ let taskDeadline3days = '';
62
+
59
63
  // 1行(r)ずつ未対応案件をチェックしてtodoTaskに格納
60
64
 
61
65
  for (let r = 3; r < array.length; r++) {
@@ -72,41 +76,55 @@
72
76
 
73
77
  }
74
78
 
75
- // 未対応案件があればメール通知 ※ todoTaskが空の場合はfalse
79
+ // 締切3日前の完了案件があれば変数taskDeadline3daysに案件情報をセット
76
80
 
77
- if (todoTask) {
81
+ if (obj[array[r][0]] &&
78
82
 
79
- // 必要情報を準備してメール通知
83
+ array[r][c] === '未' &&
80
84
 
81
- const mailTo = array[0][c];
85
+ obj[array[r][0]]['remainingDays'] === 'あと3日') {
82
86
 
83
- const targetName = array[1][c];
87
+ taskDeadline3days += `${obj[array[r][0]]['task_name']} ${obj[array[r][0]]['deadline']} \n`;
84
88
 
85
- const mailTitle = '未完了案件のお知らせ';
89
+ }
86
90
 
87
- const now = Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd HH:mm');
88
-
89
- const mailHeader = `※${now}時点の案件対応状況をお知らせします。`;
90
-
91
- const mailBody = `${mailHeader}\n${targetName}さん\n\n${todoTask}`;
92
-
93
- GmailApp.sendEmail(mailTo, mailTitle, mailBody);
94
-
95
- //ここから追加した分
91
+ }
96
92
 
97
93
 
98
94
 
99
- if (array[r][c] === '未' && obj[array[r][0]]['remainingDays'] === 'あと3日') { //未対応かつ3日前の案件の場合
95
+ const mailTo = array[0][c];
100
96
 
101
- const mailTitle = '締切3日前のお知らせ';
97
+ const targetName = array[1][c];
102
98
 
103
- const mailBody = `完了未対応案件がございます。対応案件      `;
104
99
 
105
- GmailApp.sendEmail(mailTo, mailTitle, mailBody);
106
100
 
107
- }
101
+ // 未対応案件があればメール通知 todoTaskが空の場合はfalse
108
102
 
103
+ if (todoTask) {
104
+
105
+ const mailTitle = '未完了案件のお知らせ';
106
+
107
+ const now = Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd HH:mm');
108
+
109
+ const mailHeader = `※${now}時点の案件対応状況をお知らせします。`;
110
+
111
+ const mailBody = `${mailHeader}\n${targetName}さん\n\n${todoTask}`;
112
+
113
+ GmailApp.sendEmail(mailTo, mailTitle, mailBody);
114
+
109
- }
115
+ }
116
+
117
+
118
+
119
+ // 未対応かつ3日前の案件が存在する場合メール通知
120
+
121
+ if (taskDeadline3days) {
122
+
123
+ const mailTitle = '締切3日前のお知らせ';
124
+
125
+ const mailBody = `完了未対応案件がございます。対応案件      \n${taskDeadline3days}`;
126
+
127
+ GmailApp.sendEmail(mailTo, mailTitle, mailBody);
110
128
 
111
129
  }
112
130
 

4

2021/11/28 15:16

投稿

退会済みユーザー
test CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
 
40
40
 
41
- ```
41
+ ```js
42
42
 
43
43
  function informTodoTask_(obj, array) {
44
44
 
@@ -94,9 +94,9 @@
94
94
 
95
95
  //ここから追加した分
96
96
 
97
- const day = parseInt(obj[array[r][0]]['remainingDays'] || 0);
98
97
 
98
+
99
- if (array[r][c] === '未' && 2 < day && day <= 3) { //未対応かつ3日前の案件の場合
99
+ if (array[r][c] === '未' && obj[array[r][0]]['remainingDays'] === 'あと3日') { //未対応かつ3日前の案件の場合
100
100
 
101
101
  const mailTitle = '締切3日前のお知らせ';
102
102
 

3

2021/11/28 12:00

投稿

退会済みユーザー
test CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
  直すとすれば下記のようになるでしょうか。
38
38
 
39
- (ただしinformTodoTask_を呼び出している部分が明らかにされていないため、エラーが出る可能性はあります)
39
+
40
40
 
41
41
  ```
42
42
 

2

2021/11/28 11:06

投稿

退会済みユーザー
test CHANGED
@@ -4,17 +4,17 @@
4
4
 
5
5
  //ここから追加した分
6
6
 
7
- if(todoTask=='済'); //もし済なら何もしない。  //・・・(1)
7
+ + if(todoTask=='済'); //もし済なら何もしない。//...(1)
8
8
 
9
9
 
10
10
 
11
- + else if('未' && 2<day && day <=3){ //未対応かつ3日前の案件の場合 //・・・(2)
11
+ + else if('未' && 2<day && day <=3){ //未対応かつ3日前の案件の場合 //...(2)
12
12
 
13
13
      const mailTitle = '締切3日前のお知らせ';
14
14
 
15
15
  const mailBody = `完了未対応案件がございます。対応案件      `;
16
16
 
17
- + GmailApp.sendEmail(mailTo, mailTitle, mailBody); //・・・(3)
17
+ + GmailApp.sendEmail(mailTo, mailTitle, mailBody); //...(3)
18
18
 
19
19
  }
20
20
 

1

2021/11/28 11:03

投稿

退会済みユーザー
test CHANGED
@@ -2,14 +2,116 @@
2
2
 
3
3
  ```diff
4
4
 
5
+ //ここから追加した分
6
+
7
+ if(todoTask=='済'); //もし済なら何もしない。  //・・・(1)
5
8
 
6
9
 
7
- - else if('未' && 2<day && day <=3){
8
10
 
9
- + else if (todoTask==='未' && 2 < day && day <= 3) {
11
+ + else if('未' && 2<day && day <=3){ //未対応かつ3日前の案件の場合 //・・・(2)
12
+
13
+     const mailTitle = '締切3日前のお知らせ';
14
+
15
+ const mailBody = `完了未対応案件がございます。対応案件      `;
16
+
17
+ + GmailApp.sendEmail(mailTo, mailTitle, mailBody); //・・・(3)
18
+
19
+ }
10
20
 
11
21
  ```
12
22
 
23
+ ・(1)この部分は、「済」のときに何か処理していた場合の名残でしょうか?
24
+
25
+ もしそうでないのなら、わざわざif/elseにする必要はないと思います(この行は削除して、次の行のelseだけを抜き出せばよい)
26
+
27
+  
28
+
29
+ ・(2)ここで'未'単独の文字が条件式に入っているのは不自然です。また、変数「day」は、どこにも定義されていないのに、いきなり使われています。
30
+
31
+  
32
+
33
+ ・(3) mailToは前のifブロックの中で定義されていますが、そのif内の条件式の評価結果がfalseとなってスキップされた場合、maileToが未定義エラーになる可能性があります。
13
34
 
14
35
 
36
+
15
- した場合どうでしょうか
37
+ すとすれば下記のよになるでしょうか
38
+
39
+ (ただしinformTodoTask_を呼び出している部分が明らかにされていないため、エラーが出る可能性はあります)
40
+
41
+ ```
42
+
43
+ function informTodoTask_(obj, array) {
44
+
45
+ // 1列(c)ずつメンバーの未対応案件をチェック
46
+
47
+ // 1件でも未対応があればメール送付
48
+
49
+ for (let c = 1; c < array[0].length; c++) {
50
+
51
+ // mailInfo[0][c] 対象者のメールアドレス
52
+
53
+ // mailInfo[1][c] 対象者名
54
+
55
+ // 未対応案件を追記する変数
56
+
57
+ let todoTask = '';
58
+
59
+ // 1行(r)ずつ未対応案件をチェックしてtodoTaskに格納
60
+
61
+ for (let r = 3; r < array.length; r++) {
62
+
63
+ // mailInfo[r][0] 管理番号
64
+
65
+ // 管理番号がオブジェクトの中にあり、かつ未対応であれば変数todoTaskに案件情報をセット
66
+
67
+ if (obj[array[r][0]] && array[r][c] === '未') {
68
+
69
+ // 未対応案件の案件名、締切日、残日数をセット
70
+
71
+ todoTask += `${obj[array[r][0]]['task_name']} ${obj[array[r][0]]['deadline']} ${obj[array[r][0]]['remainingDays']} \n`;
72
+
73
+ }
74
+
75
+ // 未対応案件があればメール通知 ※ todoTaskが空の場合はfalse
76
+
77
+ if (todoTask) {
78
+
79
+ // 必要情報を準備してメール通知
80
+
81
+ const mailTo = array[0][c];
82
+
83
+ const targetName = array[1][c];
84
+
85
+ const mailTitle = '未完了案件のお知らせ';
86
+
87
+ const now = Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd HH:mm');
88
+
89
+ const mailHeader = `※${now}時点の案件対応状況をお知らせします。`;
90
+
91
+ const mailBody = `${mailHeader}\n${targetName}さん\n\n${todoTask}`;
92
+
93
+ GmailApp.sendEmail(mailTo, mailTitle, mailBody);
94
+
95
+ //ここから追加した分
96
+
97
+ const day = parseInt(obj[array[r][0]]['remainingDays'] || 0);
98
+
99
+ if (array[r][c] === '未' && 2 < day && day <= 3) { //未対応かつ3日前の案件の場合
100
+
101
+ const mailTitle = '締切3日前のお知らせ';
102
+
103
+ const mailBody = `完了未対応案件がございます。対応案件      `;
104
+
105
+ GmailApp.sendEmail(mailTo, mailTitle, mailBody);
106
+
107
+ }
108
+
109
+ }
110
+
111
+ }
112
+
113
+ }
114
+
115
+ }
116
+
117
+ ```