質問編集履歴

17

文言の修正

2024/04/08 08:40

投稿

kks
kks

スコア3

test CHANGED
File without changes
test CHANGED
@@ -8,8 +8,7 @@
8
8
  例えばSlackのPCやスマホアプリが入っていたら通知がくる仕組みのはずですが、
9
9
  グーグルカレンダーで何か変更等があれば、通知できるのですが1点問題があります。
10
10
 
11
- **・1回の変更だけで複数通知が着てしまう
11
+ **・1回の変更だけで2件通知が着てしまう**
12
- い**
13
12
 
14
13
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-04-05/6cc9a85f-c76d-4595-8032-7200fdb1cdcd.png)
15
14
 

16

ソースコード最新を反映。

2024/04/08 03:35

投稿

kks
kks

スコア3

test CHANGED
File without changes
test CHANGED
@@ -24,7 +24,9 @@
24
24
  ### 該当のソースコード
25
25
 
26
26
  ```Google App Script
27
- function monitorAllCalendars() {
27
+ function monitorAllCalendars(e) {
28
+ console.log(e.triggerUid);
29
+
28
30
  try {
29
31
  var calendarIds = getAllCalendarIds();
30
32
  var lastUpdated = PropertiesService.getScriptProperties().getProperty('lastUpdated');
@@ -62,33 +64,31 @@
62
64
  Logger.log('イベントのタイトルがありませんでした。');
63
65
  }
64
66
 
65
- var startTime = event.getStartTime() ? event.getStartTime().toString() : '開始日時が設定されていません';
67
+ var startTime = event.getStartTime() ? formatDate(event.getStartTime()) : '開始日時が設定されていません';
66
- var endTime = event.getEndTime() ? event.getEndTime().toString() : '終了日時が設定されていません';
68
+ var endTime = event.getEndTime() ? formatDate(event.getEndTime()) : '終了日時が設定されていません';
67
69
  var description = event.getDescription() || '詳細が設定されていません';
68
70
  var location = event.getLocation() || '場所が設定されていません';
69
71
 
70
- Logger.log('イベントのタイル: ' + title);
72
+ // イベントのIDが通知済みリスに含まれているかを確認
73
+ //if (!notifiedEvents.includes(eventId)) {
74
+ // 通知されていない場合のみ通知を送信
75
+ var eventDetails = {
76
+ title: title,
71
- Logger.log('開始日時: ' + startTime);
77
+ startTime: startTime,
72
- Logger.log('終了日時: ' + endTime);
78
+ endTime: endTime,
79
+ description: description,
80
+ location: location,
81
+ url: calendarLink,
73
- Logger.log('詳細: ' + description);
82
+ triggerUid: "your_trigger_uid_here",
74
- Logger.log('場所: ' + location);
83
+ authMode: "your_auth_mode_here",
84
+ calendarId: calendarId
85
+ };
75
86
 
76
- var eventDetails = {
77
- title: title,
78
- startTime: startTime,
79
- endTime: endTime,
80
- description: description,
87
+ sendSlackNotification(eventDetails);
81
- location: location,
82
- url: calendarLink, // リンクを設定
83
- triggerUid: "your_trigger_uid_here",
84
- authMode: "your_auth_mode_here",
85
- calendarId: calendarId
86
- };
87
88
 
88
- sendSlackNotification(eventDetails);
89
-
90
- // 通知されたイベントを記録
89
+ // 通知されたイベントを記録
91
- notifiedEvents.push(eventId);
90
+ notifiedEvents.push(eventId);
91
+ //}
92
92
  }
93
93
  }
94
94
  }
@@ -112,6 +112,7 @@
112
112
  return year + '/' + month + '/' + day + ' ' + hours + ':' + minutes;
113
113
  }
114
114
 
115
+
115
116
  function getNotifiedEvents() {
116
117
  var notifiedEvents = PropertiesService.getScriptProperties().getProperty('notifiedEvents');
117
118
  return notifiedEvents ? notifiedEvents.split(',') : [];
@@ -128,7 +129,7 @@
128
129
  }
129
130
 
130
131
  function sendSlackNotification(eventDetails) {
131
- var webhookUrl = 'webhook入れます';
132
+ var webhookUrl = 'SlackのIncoming WebhookのWebhook URLを';
132
133
  var message = {
133
134
  text: 'Googleカレンダーのイベントが更新されました。\n' +
134
135
  'タイトル: ' + eventDetails.title + '\n' +

15

文言の修正。

2024/04/08 03:28

投稿

kks
kks

スコア3

test CHANGED
File without changes
test CHANGED
@@ -166,6 +166,8 @@
166
166
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-04-08/b5f2fe41-8f85-4b05-bceb-793e3e9c73e1.png)
167
167
 
168
168
  この状態でイベント更新があると複数の通知が着てしまいます。
169
+ この複数通知とは2通ずつ遅れながら3回ずつ送られます、その合計が6通の通知となります。
170
+ ゴールは1通だけでよいです。
169
171
 
170
172
  ### 補足
171
173
  今回はAGSでコードを集約して書いています。

14

大幅に文言の修正。

2024/04/08 03:07

投稿

kks
kks

スコア3

test CHANGED
File without changes
test CHANGED
@@ -6,10 +6,10 @@
6
6
 
7
7
  現在、上記のサイトを参考に「Incoming Webhook URL」を取得して特定のアカウントに紐づけて、
8
8
  例えばSlackのPCやスマホアプリが入っていたら通知がくる仕組みのはずですが、
9
- グーグルカレンダーで何か変更等があれば、通知できるのですが点問題があります。
9
+ グーグルカレンダーで何か変更等があれば、通知できるのですが点問題があります。
10
10
 
11
- **・1回の変更だけで2回通知がてしまう
11
+ **・1回の変更だけで複数通知がてしまう
12
- ・Slackの内容は以下のように「undefined」と値が取れない**
12
+ い**
13
13
 
14
14
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-04-05/6cc9a85f-c76d-4595-8032-7200fdb1cdcd.png)
15
15
 
@@ -161,12 +161,11 @@
161
161
  ##### 上記の詳細・結果
162
162
  コンソールデバックで調べても特にエラーなことはありませんでした。
163
163
  またGoogle App Scriptを利用することでトリガーというものも設定しています。
164
- そちらは今回3つの関数で制御していますのでそれぞれ2つトリガーに登録しています。
164
+ そちらは今回3つの関数で制御していましたが1つトリガーに登録しています。
165
- こちらセットで登録しないと通知が着ませんでした。
166
165
 
167
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-04-08/53b25903-cdca-4dcc-af71-2ba90fd2ca26.png)
166
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-04-08/b5f2fe41-8f85-4b05-bceb-793e3e9c73e1.png)
168
167
 
169
- 例えば2回通知があるという事はトリガーも同じもを2つ登録る等の確認も行いしたが、それもありませんでした
168
+ この状態でイベント更新があると複数通知が着ていま
170
169
 
171
170
  ### 補足
172
171
  今回はAGSでコードを集約して書いています。
@@ -177,35 +176,6 @@
177
176
  var webhookUrl = 'SlackのIncoming WebhookのWebhook URLを入力';
178
177
  ```
179
178
 
180
- また下記の開始時間と終了時間を定めておけば、イベント変更のあった通知が来ますが、
181
- その場合も以下のように連続して通知が来てしまいます。
182
-
183
- ```
184
- var startDateTime = lastUpdated ? new Date(lastUpdated) : new Date();
185
- var endDateTime = new Date(); // 現在の日時を終了日時として使用
186
- ```
187
-
188
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-04-05/55f416e1-5891-4fe7-9a94-47ad412f3baf.png)
189
-
190
- また「undefined」は、event.getStartTime()やevent.getEndTime()、event.getDescription()などのメソッドが、返す値がundefinedになっていることで
191
- Google Calendarのイベントが正しく読み込まれていないのではと思っています。
192
-
193
- ### 追記
194
-
195
- ```
196
- if (!notifiedEvents.includes(eventId) && lastUpdatedTime > new Date(lastUpdated)) {
197
- ```
198
- 上記の条件文を外すと、何かしらのイベントを変更すると「undefined」にならず正常に表示ができますが、
199
- 開始時間と終了時間の範囲内イベントの通知がすべてきてしまうので、とても悩ましいです。
200
-
201
-
202
- ```
203
- if (!notifiedEvents.includes(eventId){
204
- ```
205
- さらに上記の記述ですと、1通目2通目は「undefined」状態で送られて、3通目~6通目まで送られてきてその時は「undefined」ではなく正しい値をとってきています。
206
- Googleカレンダーでイベント1回の変更で最大6通も通知されてしまいます。
207
-
208
-
209
179
  急ぎの案件ではありますので
210
180
  どなたかご教示いただけたらと思います。
211
181
 

13

ソースコードを修正

2024/04/08 03:02

投稿

kks
kks

スコア3

test CHANGED
File without changes
test CHANGED
@@ -128,10 +128,7 @@
128
128
  }
129
129
 
130
130
  function sendSlackNotification(eventDetails) {
131
-
132
- //var webhookUrl = 'https://hooks.slack.com/services/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'; //佐々木さんと河田のスレッドに流し込む
133
-
134
- var webhookUrl = 'https://hooks.slack.com/services/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';
131
+ var webhookUrl = 'webhook入れます';
135
132
  var message = {
136
133
  text: 'Googleカレンダーのイベントが更新されました。\n' +
137
134
  'タイトル: ' + eventDetails.title + '\n' +

12

ソースコード追加

2024/04/08 02:10

投稿

kks
kks

スコア3

test CHANGED
File without changes
test CHANGED
@@ -28,52 +28,88 @@
28
28
  try {
29
29
  var calendarIds = getAllCalendarIds();
30
30
  var lastUpdated = PropertiesService.getScriptProperties().getProperty('lastUpdated');
31
- var currentTime = new Date().toISOString();
31
+ var currentTime = new Date();
32
- var notifiedEvents = getNotifiedEvents();
32
+ var notifiedEvents = getNotifiedEvents() || [];
33
+
33
-
34
+ var today = new Date();
35
+ today.setHours(0, 0, 0, 0);
36
+
37
+ var twoDateLater = new Date(today);
38
+ twoDateLater.setDate(today.getDate() + 7); // 1週間後の日付を取得
39
+ twoDateLater.setHours(0, 0, 0, 0); // 時刻をリセットして日付のみにする
40
+
34
41
  for (var i = 0; i < calendarIds.length; i++) {
35
42
  var calendarId = calendarIds[i];
36
- var startDateTime = new Date(); // 現在の時刻をスタートにする
43
+ var startDateTime = today;
37
- var endDateTime = new Date();
44
+ var endDateTime = twoDateLater;
38
- endDateTime.setDate(endDateTime.getDate() + 2); // 現在の時刻から2週間後の時刻を未来の時刻とする
39
45
 
40
46
  var events = CalendarApp.getCalendarById(calendarId).getEvents(startDateTime, endDateTime);
41
-
47
+
42
48
  if (events && events.length > 0) {
43
49
  for (var j = 0; j < events.length; j++) {
44
50
  var event = events[j];
45
51
  var eventId = event.getId();
46
52
  var lastUpdatedTime = event.getLastUpdated();
47
53
 
48
- // 前回の実行時以降に更新されたイベントのみ通知する
54
+ // イベントのリンクを生成
55
+ var calendarLink = 'https://calendar.google.com/calendar/render?action=VIEW&eid=' + eventId;
56
+
57
+ // すでに通知されたイベントでないか、最後の通知時間以降のイベントかを確認
49
- if (lastUpdatedTime > new Date(lastUpdated) && !notifiedEvents.includes(eventId)) {
58
+ if (lastUpdatedTime > new Date(lastUpdated)) {
59
+ var title = event.getTitle();
60
+ if (!title) {
61
+ title = 'タイトルが設定されていません';
62
+ Logger.log('イベントのタイトルがありませんでした。');
63
+ }
64
+
65
+ var startTime = event.getStartTime() ? event.getStartTime().toString() : '開始日時が設定されていません';
66
+ var endTime = event.getEndTime() ? event.getEndTime().toString() : '終了日時が設定されていません';
67
+ var description = event.getDescription() || '詳細が設定されていません';
68
+ var location = event.getLocation() || '場所が設定されていません';
69
+
70
+ Logger.log('イベントのタイトル: ' + title);
71
+ Logger.log('開始日時: ' + startTime);
72
+ Logger.log('終了日時: ' + endTime);
73
+ Logger.log('詳細: ' + description);
74
+ Logger.log('場所: ' + location);
75
+
50
76
  var eventDetails = {
51
- title: event.getTitle() || 'タイトルが設定されていません',
77
+ title: title,
52
- startTime: event.getStartTime() || '開始日時が設定されていません',
78
+ startTime: startTime,
53
- endTime: event.getEndTime() || '終了日時が設定されていません',
79
+ endTime: endTime,
54
- description: event.getDescription() || '詳細が設定されていません',
80
+ description: description,
55
- location: event.getLocation() || '場所が設定されていません',
81
+ location: location,
56
- url: event.getLocation() || 'URLが設定されていません',
82
+ url: calendarLink, // リンクを設定
57
83
  triggerUid: "your_trigger_uid_here",
58
84
  authMode: "your_auth_mode_here",
59
85
  calendarId: calendarId
60
86
  };
87
+
61
88
  sendSlackNotification(eventDetails);
62
-
89
+
63
90
  // 通知されたイベントを記録
64
91
  notifiedEvents.push(eventId);
65
92
  }
66
93
  }
67
94
  }
68
95
  }
69
-
70
- // 実行時刻を保存
96
+
71
- PropertiesService.getScriptProperties().setProperty('lastUpdated', currentTime);
72
- // 通知されたイベントを保存
97
+ // 通知されたイベントと最後の通知時間を保存
73
98
  PropertiesService.getScriptProperties().setProperty('notifiedEvents', notifiedEvents.join(','));
99
+ PropertiesService.getScriptProperties().setProperty('lastUpdated', currentTime.toISOString());
74
100
  } catch (error) {
75
101
  Logger.log('エラーが発生しました: ' + error);
76
102
  }
103
+ }
104
+
105
+ // 日付を指定された形式に整形する関数
106
+ function formatDate(date) {
107
+ var year = date.getFullYear();
108
+ var month = ('0' + (date.getMonth() + 1)).slice(-2);
109
+ var day = ('0' + date.getDate()).slice(-2);
110
+ var hours = ('0' + date.getHours()).slice(-2);
111
+ var minutes = ('0' + date.getMinutes()).slice(-2);
112
+ return year + '/' + month + '/' + day + ' ' + hours + ':' + minutes;
77
113
  }
78
114
 
79
115
  function getNotifiedEvents() {
@@ -92,10 +128,18 @@
92
128
  }
93
129
 
94
130
  function sendSlackNotification(eventDetails) {
131
+
132
+ //var webhookUrl = 'https://hooks.slack.com/services/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'; //佐々木さんと河田のスレッドに流し込む
133
+
95
- var webhookUrl = 'SlackのIncoming WebhookのWebhook URLを入力';
134
+ var webhookUrl = 'https://hooks.slack.com/services/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';
96
-
97
135
  var message = {
98
- text: 'Googleカレンダーのイベントが更新されました。\n' + eventDetails.title + '\n開始日時: ' + eventDetails.startTime + '\n終了日時: ' + eventDetails.endTime + '\n詳細: ' + eventDetails.description + '\n場所: ' + eventDetails.location + '\nURL: ' + eventDetails.url,
136
+ text: 'Googleカレンダーのイベントが更新されました。\n' +
137
+ 'タイトル: ' + eventDetails.title + '\n' +
138
+ '開始日時: ' + eventDetails.startTime + '\n' +
139
+ '終了日時: ' + eventDetails.endTime + '\n' +
140
+ '詳細: ' + eventDetails.description + '\n' +
141
+ '場所: ' + eventDetails.location + '\n' +
142
+ 'URL: ' + eventDetails.url,
99
143
  };
100
144
 
101
145
  var options = {
@@ -107,6 +151,8 @@
107
151
  UrlFetchApp.fetch(webhookUrl, options);
108
152
  }
109
153
 
154
+
155
+
110
156
  ```
111
157
 
112
158
  ### 試したこと・調べたこと

11

文言追加。

2024/04/08 00:56

投稿

kks
kks

スコア3

test CHANGED
File without changes
test CHANGED
@@ -118,9 +118,10 @@
118
118
  ##### 上記の詳細・結果
119
119
  コンソールデバックで調べても特にエラーなことはありませんでした。
120
120
  またGoogle App Scriptを利用することでトリガーというものも設定しています。
121
- そちらは今回3つの関数で制御していますので、それぞれつトリガーに登録しています。
121
+ そちらは今回3つの関数で制御していますので、それぞれつトリガーに登録しています。
122
+ こちらセットで登録しないと通知が着ませんでした。
122
123
 
123
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-04-05/e9bc0b72-e8e8-4816-95dd-0c9af6db5e9d.png)
124
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-04-08/53b25903-cdca-4dcc-af71-2ba90fd2ca26.png)
124
125
 
125
126
  例えば2回通知があるという事はトリガーも同じものを2つ登録している等の確認も行いましたが、それもありませんでした。
126
127
 

10

補足の追加

2024/04/05 08:39

投稿

kks
kks

スコア3

test CHANGED
File without changes
test CHANGED
@@ -155,6 +155,13 @@
155
155
  開始時間と終了時間の範囲内イベントの通知がすべてきてしまうので、とても悩ましいです。
156
156
 
157
157
 
158
+ ```
159
+ if (!notifiedEvents.includes(eventId){
160
+ ```
161
+ さらに上記の記述ですと、1通目2通目は「undefined」状態で送られて、3通目~6通目まで送られてきてその時は「undefined」ではなく正しい値をとってきています。
162
+ Googleカレンダーでイベント1回の変更で最大6通も通知されてしまいます。
163
+
164
+
158
165
  急ぎの案件ではありますので
159
166
  どなたかご教示いただけたらと思います。
160
167
 

9

追記文の追加

2024/04/05 07:57

投稿

kks
kks

スコア3

test CHANGED
File without changes
test CHANGED
@@ -146,6 +146,15 @@
146
146
  また「undefined」は、event.getStartTime()やevent.getEndTime()、event.getDescription()などのメソッドが、返す値がundefinedになっていることで
147
147
  Google Calendarのイベントが正しく読み込まれていないのではと思っています。
148
148
 
149
+ ### 追記
150
+
151
+ ```
152
+ if (!notifiedEvents.includes(eventId) && lastUpdatedTime > new Date(lastUpdated)) {
153
+ ```
154
+ 上記の条件文を外すと、何かしらのイベントを変更すると「undefined」にならず正常に表示ができますが、
155
+ 開始時間と終了時間の範囲内イベントの通知がすべてきてしまうので、とても悩ましいです。
156
+
157
+
149
158
  急ぎの案件ではありますので
150
159
  どなたかご教示いただけたらと思います。
151
160
 

8

補足の追加。

2024/04/05 06:52

投稿

kks
kks

スコア3

test CHANGED
File without changes
test CHANGED
@@ -146,4 +146,6 @@
146
146
  また「undefined」は、event.getStartTime()やevent.getEndTime()、event.getDescription()などのメソッドが、返す値がundefinedになっていることで
147
147
  Google Calendarのイベントが正しく読み込まれていないのではと思っています。
148
148
 
149
+ 急ぎの案件ではありますので
150
+ どなたかご教示いただけたらと思います。
149
151
 

7

文言の修正。

2024/04/05 06:07

投稿

kks
kks

スコア3

test CHANGED
File without changes
test CHANGED
@@ -142,3 +142,8 @@
142
142
  ```
143
143
 
144
144
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-04-05/55f416e1-5891-4fe7-9a94-47ad412f3baf.png)
145
+
146
+ また「undefined」は、event.getStartTime()やevent.getEndTime()、event.getDescription()などのメソッドが、返す値がundefinedになっていることで
147
+ Google Calendarのイベントが正しく読み込まれていないのではと思っています。
148
+
149
+

6

コードの修正

2024/04/05 03:59

投稿

kks
kks

スコア3

test CHANGED
File without changes
test CHANGED
@@ -92,7 +92,8 @@
92
92
  }
93
93
 
94
94
  function sendSlackNotification(eventDetails) {
95
- var webhookUrl = 'https://hooks.slack.com/services/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'; // SlackのIncoming WebhookのWebhook URLを入力
95
+ var webhookUrl = 'SlackのIncoming WebhookのWebhook URLを入力';
96
+
96
97
  var message = {
97
98
  text: 'Googleカレンダーのイベントが更新されました。\n' + eventDetails.title + '\n開始日時: ' + eventDetails.startTime + '\n終了日時: ' + eventDetails.endTime + '\n詳細: ' + eventDetails.description + '\n場所: ' + eventDetails.location + '\nURL: ' + eventDetails.url,
98
99
  };

5

コードを修正しました。

2024/04/05 03:59

投稿

kks
kks

スコア3

test CHANGED
File without changes
test CHANGED
@@ -29,12 +29,14 @@
29
29
  var calendarIds = getAllCalendarIds();
30
30
  var lastUpdated = PropertiesService.getScriptProperties().getProperty('lastUpdated');
31
31
  var currentTime = new Date().toISOString();
32
+ var notifiedEvents = getNotifiedEvents();
32
33
 
33
34
  for (var i = 0; i < calendarIds.length; i++) {
34
35
  var calendarId = calendarIds[i];
35
- var startDateTime = lastUpdated ? new Date(lastUpdated) : new Date();
36
- var endDateTime = new Date(); // 現在の時を終了日時として使用
36
+ var startDateTime = new Date(); // 現在の時スタートにする
37
-
37
+ var endDateTime = new Date();
38
+ endDateTime.setDate(endDateTime.getDate() + 2); // 現在の時刻から2週間後の時刻を未来の時刻とする
39
+
38
40
  var events = CalendarApp.getCalendarById(calendarId).getEvents(startDateTime, endDateTime);
39
41
 
40
42
  if (events && events.length > 0) {
@@ -42,9 +44,9 @@
42
44
  var event = events[j];
43
45
  var eventId = event.getId();
44
46
  var lastUpdatedTime = event.getLastUpdated();
45
-
47
+
46
48
  // 前回の実行時以降に更新されたイベントのみ通知する
47
- if (lastUpdatedTime > new Date(lastUpdated)) {
49
+ if (lastUpdatedTime > new Date(lastUpdated) && !notifiedEvents.includes(eventId)) {
48
50
  var eventDetails = {
49
51
  title: event.getTitle() || 'タイトルが設定されていません',
50
52
  startTime: event.getStartTime() || '開始日時が設定されていません',
@@ -57,6 +59,9 @@
57
59
  calendarId: calendarId
58
60
  };
59
61
  sendSlackNotification(eventDetails);
62
+
63
+ // 通知されたイベントを記録
64
+ notifiedEvents.push(eventId);
60
65
  }
61
66
  }
62
67
  }
@@ -64,9 +69,16 @@
64
69
 
65
70
  // 実行時刻を保存
66
71
  PropertiesService.getScriptProperties().setProperty('lastUpdated', currentTime);
72
+ // 通知されたイベントを保存
73
+ PropertiesService.getScriptProperties().setProperty('notifiedEvents', notifiedEvents.join(','));
67
74
  } catch (error) {
68
75
  Logger.log('エラーが発生しました: ' + error);
69
76
  }
77
+ }
78
+
79
+ function getNotifiedEvents() {
80
+ var notifiedEvents = PropertiesService.getScriptProperties().getProperty('notifiedEvents');
81
+ return notifiedEvents ? notifiedEvents.split(',') : [];
70
82
  }
71
83
 
72
84
  function getAllCalendarIds() {
@@ -80,7 +92,7 @@
80
92
  }
81
93
 
82
94
  function sendSlackNotification(eventDetails) {
83
- var webhookUrl = 'SlackのIncoming WebhookのWebhook URLを入力';
95
+ var webhookUrl = 'https://hooks.slack.com/services/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'; // SlackのIncoming WebhookのWebhook URLを入力
84
96
  var message = {
85
97
  text: 'Googleカレンダーのイベントが更新されました。\n' + eventDetails.title + '\n開始日時: ' + eventDetails.startTime + '\n終了日時: ' + eventDetails.endTime + '\n詳細: ' + eventDetails.description + '\n場所: ' + eventDetails.location + '\nURL: ' + eventDetails.url,
86
98
  };
@@ -93,6 +105,7 @@
93
105
 
94
106
  UrlFetchApp.fetch(webhookUrl, options);
95
107
  }
108
+
96
109
  ```
97
110
 
98
111
  ### 試したこと・調べたこと

4

補足を追加しました。

2024/04/05 01:47

投稿

kks
kks

スコア3

test CHANGED
File without changes
test CHANGED
@@ -110,7 +110,6 @@
110
110
 
111
111
  例えば2回通知があるという事はトリガーも同じものを2つ登録している等の確認も行いましたが、それもありませんでした。
112
112
 
113
-
114
113
  ### 補足
115
114
  今回はAGSでコードを集約して書いています。
116
115
  その中で以下の記述はWebhookのWebhook URLが入ります。
@@ -119,3 +118,13 @@
119
118
  ```
120
119
  var webhookUrl = 'SlackのIncoming WebhookのWebhook URLを入力';
121
120
  ```
121
+
122
+ また下記の開始時間と終了時間を定めておけば、イベント変更のあった通知が来ますが、
123
+ その場合も以下のように連続して通知が来てしまいます。
124
+
125
+ ```
126
+ var startDateTime = lastUpdated ? new Date(lastUpdated) : new Date();
127
+ var endDateTime = new Date(); // 現在の日時を終了日時として使用
128
+ ```
129
+
130
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-04-05/55f416e1-5891-4fe7-9a94-47ad412f3baf.png)

3

文言の追加をしました。

2024/04/05 01:26

投稿

kks
kks

スコア3

test CHANGED
File without changes
test CHANGED
@@ -14,6 +14,7 @@
14
14
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-04-05/6cc9a85f-c76d-4595-8032-7200fdb1cdcd.png)
15
15
 
16
16
  通知はできていますが、挙動や表示のされ方がおかしいという事です。
17
+ こちらのご教示のほど宜しくお願い致します。
17
18
 
18
19
  ### エラーメッセージ
19
20
  ```error

2

テキスト周りを修正しました。

2024/04/05 01:16

投稿

kks
kks

スコア3

test CHANGED
File without changes
test CHANGED
@@ -8,14 +8,8 @@
8
8
  例えばSlackのPCやスマホアプリが入っていたら通知がくる仕組みのはずですが、
9
9
  グーグルカレンダーで何か変更等があれば、通知できるのですが2点問題があります。
10
10
 
11
- ・1回の変更だけで2回通知が来てしまう
11
+ **・1回の変更だけで2回通知が来てしまう
12
- ・Slackの内容は以下のように「undefined」と値が取れない
12
+ ・Slackの内容は以下のように「undefined」と値が取れない**
13
- undefined
14
- 開始日時: undefined
15
- 終了日時: undefined
16
- 詳細: undefined
17
- 場所: undefined
18
- URL: undefined
19
13
 
20
14
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-04-05/6cc9a85f-c76d-4595-8032-7200fdb1cdcd.png)
21
15
 

1

画像の追加をしました。

2024/04/05 01:15

投稿

kks
kks

スコア3

test CHANGED
File without changes
test CHANGED
@@ -16,6 +16,8 @@
16
16
  詳細: undefined
17
17
  場所: undefined
18
18
  URL: undefined
19
+
20
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-04-05/6cc9a85f-c76d-4595-8032-7200fdb1cdcd.png)
19
21
 
20
22
  通知はできていますが、挙動や表示のされ方がおかしいという事です。
21
23
 
@@ -109,7 +111,10 @@
109
111
  またGoogle App Scriptを利用することでトリガーというものも設定しています。
110
112
  そちらは今回3つの関数で制御していますので、それぞれ3つトリガーに登録しています。
111
113
 
114
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-04-05/e9bc0b72-e8e8-4816-95dd-0c9af6db5e9d.png)
115
+
112
116
  例えば2回通知があるという事はトリガーも同じものを2つ登録している等の確認も行いましたが、それもありませんでした。
117
+
113
118
 
114
119
  ### 補足
115
120
  今回はAGSでコードを集約して書いています。