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

回答編集履歴

2

a

2019/10/28 13:43

投稿

papinianus
papinianus

スコア12705

answer CHANGED
@@ -1,22 +1,23 @@
1
1
  ```javascripit
2
2
  const lineToken = "LINE コード";
3
3
 
4
- function main() {
5
- const events = CalendarApp.getAllCalendars().map(function (cal) {
6
- return [cal.getName(), getEventsStartsToday(cal)];
4
+ function q219287() {
5
+ const today = new Date();
6
+ const tomorrow = (new Date()).setDate(today.getDate() + 1);
7
+ [["きょう",today, getEvents(today)],["あした",tomorrow,getEvents(tomorrow)]].filter(function(e) { return e[2].length > 0;}).forEach(function(e){ sendToLine(e[0]+toTime(e[1])+'\n'+eventAsText(e[2]));});
8
+ }
9
+ function getEvents(thedate) {
10
+ return CalendarApp.getAllCalendars().map(function (cal) {
11
+ return [cal.getName(), getEventsStartsInTheDay(cal, thedate)];
7
12
  }).filter(function (e) {
8
13
  return e[1].length > 0;
9
14
  });
15
+ }
10
- if (events.length < 1) {
16
+ function eventAsText(events) {
11
- return;
12
- } // quit if there's no events for today.
13
- const eventsAsText = events.map(function (e) {
17
+ return events.map(function (e) {
14
18
  return '◆ ' + e[0] + '\n' + e[1].map(eventToString).join('\n\n');
15
19
  }).join('\n');
16
- const head = toTime(new Date()) + "\n";
17
- sendToLine(head + eventsAsText);
18
20
  }
19
-
20
21
  function sendToLine(text) {
21
22
  const token = lineToken;
22
23
  const options = {
@@ -31,11 +32,10 @@
31
32
  return Utilities.formatDate(str, 'JST', "HH:mm");
32
33
  }
33
34
 
34
- function getEventsStartsToday(calendar) {
35
+ function getEventsStartsInTheDay(calendar, thedate) {
35
- const today = new Date();
36
- const thedate = today.getDate();
36
+ const dateNum = thedate.getDate();
37
- return calendar.getEventsForDay(today).filter(function (e) {
37
+ return calendar.getEventsForDay(thedate).filter(function (e) {
38
- return e.getStartTime().getDate() === thedate
38
+ return e.getStartTime().getDate() === dateNum;
39
39
  });
40
40
  }
41
41
 

1

2019/10/28 13:43

投稿

papinianus
papinianus

スコア12705

answer CHANGED
@@ -1,57 +1,9 @@
1
- 今日中に終わるものだけにするやつ。直すならこうかな。
2
1
  ```javascripit
3
- function main() {
4
-
5
- var calendars = CalendarApp.getAllCalendars();
6
-
7
- var text = "";
8
-
9
- for(i in calendars) {
10
-
11
- var calendar = calendars[i];
12
-
13
- var events = calendar.getEventsForDay(new Date());
14
-
15
- if( events.length > 0 ) {
16
-
17
- text += "◆ " + calendar.getName() + "\n";
18
-
19
- }
20
-
21
- for(j in events) {
22
-
23
- var event = events[j];
24
- if(event.getEndTime().getDate() !== (new Date()).getDate()) {continue;}
25
-
26
- var title = event.getTitle();
27
-
28
- var start = toTime(event.getStartTime());
29
- var end = toTime(event.getEndTime());
30
-
31
- text += start + ' - ' + end + "\n" + " " + title + '\n\n';
32
-
33
- }
34
-
35
- // if( events.length > 1 ) {
36
- //
37
- // sendToLine(text) += "\n";
38
- //
39
- // }
40
-
41
- }
42
- if(text === "") {return;}
43
- sendToLine(Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd') + "\n" + text);
44
-
45
- }
46
- ```
47
-
48
- 合ってるか検証してないけど、私ならこうかく。
49
- ```javascript
50
2
  const lineToken = "LINE コード";
51
3
 
52
4
  function main() {
53
5
  const events = CalendarApp.getAllCalendars().map(function (cal) {
54
- return [cal.getName(), getEventsEndsToday(cal)];
6
+ return [cal.getName(), getEventsStartsToday(cal)];
55
7
  }).filter(function (e) {
56
8
  return e[1].length > 0;
57
9
  });
@@ -79,11 +31,11 @@
79
31
  return Utilities.formatDate(str, 'JST', "HH:mm");
80
32
  }
81
33
 
82
- function getEventsEndsToday(calender) {
34
+ function getEventsStartsToday(calendar) {
83
35
  const today = new Date();
84
36
  const thedate = today.getDate();
85
- return calender.getEventsForDay(today).filter(function (e) {
37
+ return calendar.getEventsForDay(today).filter(function (e) {
86
- return e.getEndTime().getDate() === thedate
38
+ return e.getStartTime().getDate() === thedate
87
39
  });
88
40
  }
89
41