質問編集履歴

1

質問が分かりづらく大変失礼しました。できる限り分かりやすくなるように修正いたしました。

2019/11/04 09:29

投稿

tanukichan
tanukichan

スコア4

test CHANGED
File without changes
test CHANGED
@@ -1,12 +1,12 @@
1
- ### 前提・実現たいこと
1
+ 初めまて初心者です。
2
2
 
3
- →spreadsheet上の行で期限が来らMailSendを行いたい
3
+ どなか教えていただけなでしょうか。
4
4
 
5
5
 
6
6
 
7
- 初めまて初心者です。
7
+ ### 前提・実現たいこと
8
8
 
9
- どなたか教えていただけなでしょうか。
9
+ GoogleActionScriptを使用し、Google spreadsheet上の各行の中で期限の3日前、7日前に自動的に指定のメールアドレスにMailSendでリマインドを行いたい
10
10
 
11
11
 
12
12
 
@@ -14,26 +14,136 @@
14
14
 
15
15
  ### 発生している問題・エラーメッセージ
16
16
 
17
+ 実行すると以下エラーとなります。
18
+
17
- formatDate(string,string,string)
19
+ Cannot find method formatDate(string,string,string). (line 25, file "Code")
18
20
 
19
21
 
20
22
 
23
+ ---
24
+
25
+ 25行目のコード抜粋
26
+
21
-      var strLimit_format = Utilities.formatDate(strLimit, "JST", "yyyy/MM/dd");
27
+ var strLimit_format = Utilities.formatDate(strLimit, "JST", "yyyy/MM/dd");
28
+
29
+ ---
22
30
 
23
31
 
24
32
 
25
- 上記対策のため、以下のように修正
33
+ ### ネットで調べて解決しようと行ったこと
26
-
27
- var strLimit_format = Utilities.formatDate(new Date(strLimit), "JST", "yyyy/MM/dd"); //返却期限
28
34
 
29
35
 
30
36
 
31
- エラー内容が以下になりました。
37
+ ----
32
38
 
39
+ 25行目のコード抜粋にnewdateを追加
40
+
33
- ReferenceError: "strLimit_3Date_format" is not defined. (line 36, file "Code")Dismiss
41
+ var strLimit_format = Utilities.formatDate(new Date(strLimit), "JST", "yyyy/MM/dd");
42
+
43
+ ----
34
44
 
35
45
 
36
46
 
37
- line36記述は以下になります。
47
+ ### 25行目に追記した結果エラーメッセージ
38
48
 
49
+ TypeError: Cannot find function getYear in object 期限. (line 36, file "Code")
50
+
51
+
52
+
53
+ ### spread sheetの内容
54
+
55
+ ![イメージ説明](73d8fb266a1764e5d835ea840488d0f8.png)
56
+
57
+
58
+
59
+ ### コード全文
60
+
61
+ function mailSend() {
62
+
63
+ var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
64
+
65
+ var sheet1 = spreadsheet.getSheets()[0];
66
+
67
+ var today = new Date();
68
+
69
+ var today_format = Utilities.formatDate(today, "JST", "yyyy/MM/dd");
70
+
71
+
72
+
73
+ var strFrom = "hoge@gmail.com";
74
+
75
+ var strCc = "";
76
+
77
+
78
+
79
+ for (var i = 2; i <= 300; i++) {
80
+
81
+
82
+
83
+ var strName = sheet1.getRange(i, 3).getValue();
84
+
85
+
86
+
87
+ if ( strName == "" ) {
88
+
89
+ continue;
90
+
91
+ }
92
+
93
+
94
+
95
+ var strTo = sheet1.getRange(i, 4).getValue();
96
+
97
+ var strQualNo = sheet1.getRange(i, 1).getValue();
98
+
99
+ var strQualName = sheet1.getRange(i, 2).getValue();
100
+
101
+ var strLimit = sheet1.getRange(i, 6).getValue();
102
+
103
+ var strLimit_format = Utilities.formatDate(new Date(strLimit), "JST", "yyyy/MM/dd");
104
+
105
+ var strSub = "[お知らせ]" + strQualName + "期限について"; //Subject
106
+
107
+
108
+
109
+ var strBody = strName + "さん\n\nお疲れ様です。;
110
+
111
+
112
+
39
- var strLimit_3Date = new Date(strLimit.getYear(), strLimit.getMonth(), strLimit.getDate() - 3); //3日前
113
+ var strLimit_3Date = new Date(strLimit.getYear(), strLimit.getMonth(), strLimit.getDate() - 3);
114
+
115
+ var strLimit_3Date_format = Utilities.formatDate(strLimit_3Date,"JST","yyyy/MM/dd");
116
+
117
+
118
+
119
+ var strLimit_7Date = new Date(strLimit.getYear(), strLimit.getMonth(), strLimit.getDate() - 7);
120
+
121
+ var strLimit_7Date_format = Utilities.formatDate(strLimit_7Date,"JST","yyyy/MM/dd");
122
+
123
+
124
+
125
+ if ( today_format == strLimit_3Date_format || today_format == strLimit_7Date_format ) {
126
+
127
+ var send = GmailApp.sendEmail(
128
+
129
+ strTo,
130
+
131
+ strSub,
132
+
133
+ strBody, {
134
+
135
+ from: strFrom
136
+
137
+ }
138
+
139
+ );
140
+
141
+ }
142
+
143
+ }
144
+
145
+ }
146
+
147
+
148
+
149
+ ### 以上です。