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

質問編集履歴

1

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

2019/11/04 09:29

投稿

tanukichan
tanukichan

スコア4

title CHANGED
File without changes
body CHANGED
@@ -1,20 +1,75 @@
1
- ### 前提・実現したいこと
2
- →spreadsheet上の行で期限が来たらMailSendを行いたい
3
-
4
1
  初めまして初心者です。
5
2
  どなたか教えていただけないでしょうか。
6
3
 
4
+ ### 前提・実現したいこと
5
+ GoogleActionScriptを使用し、Google spreadsheet上の各行の中で期限の3日前、7日前に自動的に指定のメールアドレスにMailSendでリマインドを行いたい
7
6
 
7
+
8
8
  ### 発生している問題・エラーメッセージ
9
+ 実行すると以下エラーとなります。
9
- formatDate(string,string,string)
10
+ Cannot find method formatDate(string,string,string). (line 25, file "Code")
10
11
 
12
+ ---
13
+ 25行目のコード抜粋
11
-      var strLimit_format = Utilities.formatDate(strLimit, "JST", "yyyy/MM/dd");
14
+ var strLimit_format = Utilities.formatDate(strLimit, "JST", "yyyy/MM/dd");
15
+ ---
12
16
 
13
- 上記対策のため、以下のように修正
17
+ ### ネットで調べて解決しようと行ったこと
14
- var strLimit_format = Utilities.formatDate(new Date(strLimit), "JST", "yyyy/MM/dd"); //返却期限
15
18
 
19
+ ----
16
- エラ内容が以下なりました。
20
+ 25行目のコド抜粋newdateを追加
17
- ReferenceError: "strLimit_3Date_format" is not defined. (line 36, file "Code")Dismiss
21
+ var strLimit_format = Utilities.formatDate(new Date(strLimit), "JST", "yyyy/MM/dd");
22
+ ----
18
23
 
24
+ ### 25行目に追記した結果のエラーメッセージ
25
+ TypeError: Cannot find function getYear in object 期限. (line 36, file "Code")
26
+
27
+ ### spread sheetの内容
28
+ ![イメージ説明](73d8fb266a1764e5d835ea840488d0f8.png)
29
+
30
+ ### コード全文
19
- line36の記述は以下になります。
31
+ function mailSend() {
32
+ var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
33
+ var sheet1 = spreadsheet.getSheets()[0];
34
+ var today = new Date();
35
+ var today_format = Utilities.formatDate(today, "JST", "yyyy/MM/dd");
36
+
37
+ var strFrom = "hoge@gmail.com";
38
+ var strCc = "";
39
+
40
+ for (var i = 2; i <= 300; i++) {
41
+
42
+ var strName = sheet1.getRange(i, 3).getValue();
43
+
44
+ if ( strName == "" ) {
45
+ continue;
46
+ }
47
+
48
+ var strTo = sheet1.getRange(i, 4).getValue();
49
+ var strQualNo = sheet1.getRange(i, 1).getValue();
50
+ var strQualName = sheet1.getRange(i, 2).getValue();
51
+ var strLimit = sheet1.getRange(i, 6).getValue();
52
+ var strLimit_format = Utilities.formatDate(new Date(strLimit), "JST", "yyyy/MM/dd");
53
+ var strSub = "[お知らせ]" + strQualName + "期限について"; //Subject
54
+
55
+ var strBody = strName + "さん\n\nお疲れ様です。;
56
+
20
- var strLimit_3Date = new Date(strLimit.getYear(), strLimit.getMonth(), strLimit.getDate() - 3); //3日前
57
+ var strLimit_3Date = new Date(strLimit.getYear(), strLimit.getMonth(), strLimit.getDate() - 3);
58
+ var strLimit_3Date_format = Utilities.formatDate(strLimit_3Date,"JST","yyyy/MM/dd");
59
+
60
+ var strLimit_7Date = new Date(strLimit.getYear(), strLimit.getMonth(), strLimit.getDate() - 7);
61
+ var strLimit_7Date_format = Utilities.formatDate(strLimit_7Date,"JST","yyyy/MM/dd");
62
+
63
+ if ( today_format == strLimit_3Date_format || today_format == strLimit_7Date_format ) {
64
+ var send = GmailApp.sendEmail(
65
+ strTo,
66
+ strSub,
67
+ strBody, {
68
+ from: strFrom
69
+ }
70
+ );
71
+ }
72
+ }
73
+ }
74
+
75
+ ### 以上です。