我有以下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
它说:“要还原为默认的提醒集,请执行将更新设置reminders.useDefault
返回至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);
});
});
}
上面的代码将在控制台中返回错误Cannot specify both default reminders and overrides at the same time.
。
测试2:
基于关于stackoverflow Google Calendar API: How to disable Notifications?的可接受答案
它说:“因此,我认为您可以设置"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);
});
});
}
修补/更新可用于其他字段,例如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);
});
});
}
您对如何删除事件提醒有任何想法吗?
答案 0 :(得分:0)
因此,在解决它之后,我使用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
并为其提供一个空值。如果您遇到相同的问题,希望对您有所帮助。
答案 1 :(得分:0)
使用库进行修补时,您不仅可以将替代值设置为null,还需要使用Data.nullOf(ArrayList.class):
Event.Reminders reminders = new Event.Reminders()
.setUseDefault(false)
.setOverrides(Data.nullOf(ArrayList.class));
newEvent.setReminders(reminders);
答案 2 :(得分:-1)
尝试一下:
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);
});
});
}