回答編集履歴

4

 

2022/05/15 06:50

投稿

退会済みユーザー
test CHANGED
@@ -50,7 +50,7 @@
50
50
 
51
51
  # 追記2
52
52
  また、
53
- hplidayのシートデータがわからないので推測ですが、holidayは時刻が0:00:00となっているので、上記比較の際にdateの時刻も0:00:00にそろえる必要がある。
53
+ 祝日のシートデータがわからないので推測ですが、おそらくholidayは時刻が0:00:00となるので、上記比較の際にdateの時刻も0:00:00にそろえる必要がある。
54
54
 
55
55
  ・holidayの数だけ処理をループしているため、同じ下書きが作られてしまう。
56
56
  といった問題があります。

3

 

2022/05/15 06:50

投稿

退会済みユーザー
test CHANGED
@@ -48,6 +48,7 @@
48
48
  ```
49
49
  のように、=を「==」に変えてみてください。
50
50
 
51
+ # 追記2
51
52
  また、
52
53
  ・hplidayのシートデータがわからないので推測ですが、holidayは時刻が0:00:00となっているので、上記比較の際にdateの時刻も0:00:00にそろえる必要がある。
53
54
 

2

修正

2022/05/15 06:49

投稿

退会済みユーザー
test CHANGED
@@ -42,10 +42,118 @@
42
42
  これだと「=」が1つで、代入になっているため、常にtrueになってしまいます。
43
43
 
44
44
  ```js
45
+
45
46
  if (holiday[i] == date) {
46
47
 
47
48
  ```
48
49
  のように、=を「==」に変えてみてください。
49
50
 
51
+ また、
52
+ ・hplidayのシートデータがわからないので推測ですが、holidayは時刻が0:00:00となっているので、上記比較の際にdateの時刻も0:00:00にそろえる必要がある。
53
+
54
+ ・holidayの数だけ処理をループしているため、同じ下書きが作られてしまう。
55
+ といった問題があります。
56
+
57
+ これらを修正してみたのが下記です。
58
+ (全部の情報が公開されておらず、一部推測しているため、うまく動かない可能性はあります。
59
+ 可能ならスプレッドシートを共有していただいた方が解決の近道かと思います)
60
+
61
+ ```js
62
+ function createmail() {
63
+
64
+ //曜日の取得
65
+ var date = new Date();
66
+ var day = date.getDay();
67
+
68
+ //今日が土日なら処理を中断
69
+ if (day === 0 || day === 6) {
70
+ return;
71
+ }
72
+
73
+ Logger.log(day);
74
+ Logger.log(date);
75
+
76
+ //祝日の取得
77
+ var ss = SpreadsheetApp.getActiveSpreadsheet();
78
+ var holidaysheet = ss.getSheetByName("祝日一覧");
79
+ var lastRow = holidaysheet.getLastRow()
80
+ var holiday = holidaysheet.getRange(1, 1, lastRow).getValues().slice(1);
81
+
82
+ // 時刻を0:00:00にする。
83
+ date.setHours(0, 0, 0, 0);
84
+ //祝日一覧の日付とdateの日付が一致した場合処理を中断
85
+ for (var i = 0; i < holiday.length; ++i) {
86
+ if (holiday[i] == date) {
87
+ return;
88
+ }
89
+ }
90
+
91
+ Logger.log(holiday);
50
92
 
51
93
 
94
+ //FMT詳細
95
+ var ss = SpreadsheetApp.getActiveSpreadsheet();
96
+ var sheet = ss.getSheetByName("FMT");
97
+
98
+ //toの取得
99
+ var range = sheet.getRange("C2");
100
+ var to = range.getValue();
101
+
102
+ //ccの取得
103
+ var range = sheet.getRange("C3");
104
+ var cc = range.getValue();
105
+
106
+ //subjectの取得
107
+ var range = sheet.getRange("C4");
108
+ var subject = range.getValue();
109
+
110
+
111
+
112
+ //当日すべてのイベントが格納されてる箱
113
+ var values = [];
114
+
115
+ //イベントの取得
116
+ var calendar = CalendarApp.getCalendarById("カレンダーID");
117
+ var today = new Date();
118
+ var events = calendar.getEventsForDay(today);
119
+ var length = events.length;
120
+
121
+ //繰り返し処理
122
+ for (var i = 1; i < length; ++i) {
123
+
124
+ var event = events[i];      //eventsから配列を取り出す
125
+ var title = event.getTitle(); //eventのタイトルを取得 
126
+
127
+
128
+ var start = event.getStartTime();                 //eventのスタート時間の取得
129
+ start = Utilities.formatDate(start, "Asia/Tokyo", "HH:mm");
130
+ var end = event.getEndTime();                  //eventのエンド時間の取得
131
+ end = Utilities.formatDate(end, "Asia/Tokyo", "HH:mm");
132
+ var time = `${start} - ${end}`
133
+
134
+ values.push(`${time} ${title}`)
135
+ }
136
+
137
+
138
+
139
+ //イベントをスプレッドシートにセット   
140
+ var daily = sheet.getRange("C5");
141
+ var titles = daily.setValue(values.join("\n"));
142
+
143
+
144
+ //bodyの取得
145
+ var range = sheet.getRange("C6");
146
+ var body = range.getValue();
147
+
148
+
149
+ //optionsの指定
150
+ options = {
151
+
152
+ cc: cc
153
+ }
154
+
155
+ //下書き作成
156
+ GmailApp.createDraft(to, subject, body, options);
157
+
158
+ }
159
+ ```

1

追記

2022/05/13 20:05

投稿

退会済みユーザー
test CHANGED
@@ -30,3 +30,22 @@
30
30
 
31
31
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-05-13/9abea229-2b49-4d90-aacb-a157515ebab5.jpeg)
32
32
 
33
+ ---
34
+
35
+ # 追記
36
+ ```js
37
+ if (holiday[i] = date) {
38
+ return;
39
+ }
40
+ ```
41
+
42
+ これだと「=」が1つで、代入になっているため、常にtrueになってしまいます。
43
+
44
+ ```js
45
+ if (holiday[i] == date) {
46
+
47
+ ```
48
+ のように、=を「==」に変えてみてください。
49
+
50
+
51
+