如何使用 Google Calendar API v3 (JavaScript) 删除事件通知
How to remove event notification using Google Calendar API v3 (JavaScript)
我有以下JSON
var resource = {
"summary": "Sample Event",
"start": {
"dateTime": sample1
},
"end": {
"dateTime": twoHoursLater
},
"reminders": {
"useDefault": false,
"overrides": [
{
"method": "popup",
"minutes": "5"
},
{
"method": "email",
"minutes": "5"
}
]
}
};
我可以使用下面的代码将它插入到 Google 日历中
function addEvent() {
gapi.client.load('calendar', 'v3', function() {
var request = gapi.client.calendar.events.insert({
'calendarId': calendarId,
'resource': resource
});
request.execute(function(resp) {
console.log(resp);
});
});
}
在 Google 日历网站中显示为:
5 minutes before, as email
5 minutes before
如您所见,我的活动有提醒,这意味着它将在活动开始前 5 分钟通过弹出窗口和电子邮件通知。
现在,我想使用 API.
以编程方式删除此事件提醒
到目前为止我已经尝试过:
测试 1:
基于文档https://developers.google.com/calendar/concepts/reminders
它说 "To revert back to the default set of reminders, perform an update setting reminders.useDefault
back to true.
"
var resource3 = {
"summary": "Sample Event xx",
"start": {
"dateTime": sample1
},
"end": {
"dateTime": twoHoursLater
},
"reminders": {
"useDefault": true
}
};
function updateEvent(eventId) {
gapi.client.load('calendar', 'v3', function() {
var request = gapi.client.calendar.events.patch({
'calendarId': calendarId,
'eventId': eventId,
'resource': resource3
});
request.execute(function(resp) {
console.log(resp);
});
});
}
上面的代码将在控制台中 return 一个错误 Cannot specify both default reminders and overrides at the same time.
。
测试 2:
基于 Whosebug 上接受的答案
它说“因此我认为你可以设置 "useDefault": false
并且不提供任何覆盖,它应该会导致事件没有提醒。"
var resource3 = {
"summary": "Sample Event xx",
"start": {
"dateTime": sample1
},
"end": {
"dateTime": twoHoursLater
},
"reminders": {
"useDefault": false
}
};
function updateEvent(eventId) {
gapi.client.load('calendar', 'v3', function() {
var request = gapi.client.calendar.events.patch({
'calendarId': calendarId,
'eventId': eventId,
'resource': resource3
});
request.execute(function(resp) {
console.log(resp);
});
});
}
patching/updating 适用于其他领域,例如 summary
、start
和 end
。但它不会删除事件提醒。
测试 3:
这是我目前试验过的。我完全删除了提醒。仍然没有运气。与测试 2 中的输出相同。
var resource3 = {
"summary": "Sample Event xx",
"start": {
"dateTime": sample1
},
"end": {
"dateTime": twoHoursLater
}
};
unction updateEvent(eventId) {
gapi.client.load('calendar', 'v3', function() {
var request = gapi.client.calendar.events.patch({
'calendarId': calendarId,
'eventId': eventId,
'resource': resource3
});
request.execute(function(resp) {
console.log(resp);
});
});
}
您知道如何删除事件提醒吗?
所以在解决它之后,我成功地使用 API 删除了事件通知。正如 测试 2 中所述,答案几乎接近,它是通过使用以下代码完成的:
var resource3 = {
"summary": "Sample Event xx",
"start": {
"dateTime": sample1
},
"end": {
"dateTime": twoHoursLater
},
"reminders": {
"useDefault": false,
"overrides": []
}
};
function updateEvent(eventId) {
gapi.client.load('calendar', 'v3', function() {
var request = gapi.client.calendar.events.patch({
'calendarId': calendarId,
'eventId': eventId,
'resource': resource3
});
request.execute(function(resp) {
console.log(resp);
});
});
}
我只需要添加 overrides
并给它一个空值。如果您遇到同样的问题,希望这对您有所帮助。
试试这个:
var resource3 = {
"summary": "Sample Event xx",
"start": {
"dateTime": sample1
},
"end": {
"dateTime": twoHoursLater
},
"reminders": {
"useDefault": false,
"overrides": []
}
};
function updateEvent(eventId) {
gapi.client.load('calendar', 'v3', function() {
var request = gapi.client.calendar.events.patch({
'calendarId': calendarId,
'eventId': eventId,
'resource': resource3
});
request.execute(function(resp) {
console.log(resp);
});
});
}
使用库进行修补时,您不能只将覆盖设置为 null,您需要使用 Data.nullOf(ArrayList.class):
Event.Reminders reminders = new Event.Reminders()
.setUseDefault(false)
.setOverrides(Data.nullOf(ArrayList.class));
newEvent.setReminders(reminders);
根据我的经验,patch
/update
对于
之后的事件
reminders: {
useDefault: false,
overrides: []
}
仅适用于 Firefox,而 Chrome 顽固地坚持默认设置。 (超级莫名其妙,我查了好几遍:同一个事件在Firefox和Chrome中查看时会有不同的提醒。)
我解决这个问题的方法是首先不创建事件,而是使用日历 API:
const event = {
start: {...},
end: {...},
summary: 'My Event',
reminders: {
useDefault: false
}
}
Calendar.Events.insert(event, calendarId)
这意味着我不能使用(稍微容易一些)Calendar service provided by Google in the app scripts,但是 API 也不错。
我有以下JSON
var resource = {
"summary": "Sample Event",
"start": {
"dateTime": sample1
},
"end": {
"dateTime": twoHoursLater
},
"reminders": {
"useDefault": false,
"overrides": [
{
"method": "popup",
"minutes": "5"
},
{
"method": "email",
"minutes": "5"
}
]
}
};
我可以使用下面的代码将它插入到 Google 日历中
function addEvent() {
gapi.client.load('calendar', 'v3', function() {
var request = gapi.client.calendar.events.insert({
'calendarId': calendarId,
'resource': resource
});
request.execute(function(resp) {
console.log(resp);
});
});
}
在 Google 日历网站中显示为:
5 minutes before, as email
5 minutes before
如您所见,我的活动有提醒,这意味着它将在活动开始前 5 分钟通过弹出窗口和电子邮件通知。
现在,我想使用 API.
以编程方式删除此事件提醒到目前为止我已经尝试过:
测试 1:
基于文档https://developers.google.com/calendar/concepts/reminders
它说 "To revert back to the default set of reminders, perform an update setting reminders.useDefault
back to true.
"
var resource3 = {
"summary": "Sample Event xx",
"start": {
"dateTime": sample1
},
"end": {
"dateTime": twoHoursLater
},
"reminders": {
"useDefault": true
}
};
function updateEvent(eventId) {
gapi.client.load('calendar', 'v3', function() {
var request = gapi.client.calendar.events.patch({
'calendarId': calendarId,
'eventId': eventId,
'resource': resource3
});
request.execute(function(resp) {
console.log(resp);
});
});
}
上面的代码将在控制台中 return 一个错误 Cannot specify both default reminders and overrides at the same time.
。
测试 2:
基于 Whosebug 上接受的答案
它说“因此我认为你可以设置 "useDefault": false
并且不提供任何覆盖,它应该会导致事件没有提醒。"
var resource3 = {
"summary": "Sample Event xx",
"start": {
"dateTime": sample1
},
"end": {
"dateTime": twoHoursLater
},
"reminders": {
"useDefault": false
}
};
function updateEvent(eventId) {
gapi.client.load('calendar', 'v3', function() {
var request = gapi.client.calendar.events.patch({
'calendarId': calendarId,
'eventId': eventId,
'resource': resource3
});
request.execute(function(resp) {
console.log(resp);
});
});
}
patching/updating 适用于其他领域,例如 summary
、start
和 end
。但它不会删除事件提醒。
测试 3:
这是我目前试验过的。我完全删除了提醒。仍然没有运气。与测试 2 中的输出相同。
var resource3 = {
"summary": "Sample Event xx",
"start": {
"dateTime": sample1
},
"end": {
"dateTime": twoHoursLater
}
};
unction updateEvent(eventId) {
gapi.client.load('calendar', 'v3', function() {
var request = gapi.client.calendar.events.patch({
'calendarId': calendarId,
'eventId': eventId,
'resource': resource3
});
request.execute(function(resp) {
console.log(resp);
});
});
}
您知道如何删除事件提醒吗?
所以在解决它之后,我成功地使用 API 删除了事件通知。正如 测试 2 中所述,答案几乎接近,它是通过使用以下代码完成的:
var resource3 = {
"summary": "Sample Event xx",
"start": {
"dateTime": sample1
},
"end": {
"dateTime": twoHoursLater
},
"reminders": {
"useDefault": false,
"overrides": []
}
};
function updateEvent(eventId) {
gapi.client.load('calendar', 'v3', function() {
var request = gapi.client.calendar.events.patch({
'calendarId': calendarId,
'eventId': eventId,
'resource': resource3
});
request.execute(function(resp) {
console.log(resp);
});
});
}
我只需要添加 overrides
并给它一个空值。如果您遇到同样的问题,希望这对您有所帮助。
试试这个:
var resource3 = {
"summary": "Sample Event xx",
"start": {
"dateTime": sample1
},
"end": {
"dateTime": twoHoursLater
},
"reminders": {
"useDefault": false,
"overrides": []
}
};
function updateEvent(eventId) {
gapi.client.load('calendar', 'v3', function() {
var request = gapi.client.calendar.events.patch({
'calendarId': calendarId,
'eventId': eventId,
'resource': resource3
});
request.execute(function(resp) {
console.log(resp);
});
});
}
使用库进行修补时,您不能只将覆盖设置为 null,您需要使用 Data.nullOf(ArrayList.class):
Event.Reminders reminders = new Event.Reminders()
.setUseDefault(false)
.setOverrides(Data.nullOf(ArrayList.class));
newEvent.setReminders(reminders);
根据我的经验,patch
/update
对于
reminders: {
useDefault: false,
overrides: []
}
仅适用于 Firefox,而 Chrome 顽固地坚持默认设置。 (超级莫名其妙,我查了好几遍:同一个事件在Firefox和Chrome中查看时会有不同的提醒。)
我解决这个问题的方法是首先不创建事件,而是使用日历 API:
const event = {
start: {...},
end: {...},
summary: 'My Event',
reminders: {
useDefault: false
}
}
Calendar.Events.insert(event, calendarId)
这意味着我不能使用(稍微容易一些)Calendar service provided by Google in the app scripts,但是 API 也不错。