无法更新日历事件:请求错误
Unable to update calendar event: bad request
我正在尝试更新 google 日历中的日历事件。我的代码目前如下:
function changeVisibilityForTwoWeeks() {
var calendarId = 'primary';
var now = new Date();
var inTwoWeeks = new Date();
inTwoWeeks.setDate(new Date().getDate()+14);
var events = Calendar.Events.list(calendarId, {
timeMin: now.toISOString(),
timeMax: inTwoWeeks.toISOString(),
singleEvents: true,
orderBy: 'startTime'
});
if (events.items && events.items.length > 0) {
for (var i = 0; i < events.items.length; i++) {
var event = events.items[i];
if (event.organizer.email.endsWith("@somedomain.com"))
) {
event.setVisibility(CalendarApp.Visibility.PRIVATE);
event = Calendar.Events.update(event, calendarId, event.getId());
}
}}
}
我得到的只是 GoogleJsonResponseException:API 调用 calendar.events.update 失败,出现错误:错误请求
有什么错误的建议吗?
谢谢!
当您尝试使用 Calendar.Events.update, you passed a complete Events resource 作为请求更新活动时 body。
请注意Events resource are writable when using Calendar.Events.update. Refer to the list of required and optional properties that could be modified/updated using Calendar.Events.update method in the Request body中的参数并非全部:
示例代码:
if (events.items && events.items.length > 0) {
for (var i = 0; i < events.items.length; i++) {
var event = events.items[i];
if (event.organizer.email.endsWith("@somedomain.com"))
{
var updateEvent = {
start: {
dateTime: event.start.dateTime
},
end: {
dateTime: event.end.dateTime
},
visibility: "private"
};
Logger.log(updateEvent);
event = Calendar.Events.update(updateEvent, calendarId, event.getId());
}
}}
之前:
之后:
重要提示:
我特意没有包括其他可选参数,以向您展示如果您没有将旧事件中的其他参数复制到更新事件中,它仍然会在您使用 Calendar.Events.update 时更新。请注意,标题未设置。
因此,请确保将必要的 information/properties 从您的旧事件复制到更新后的事件,并确保它基于 Calendar.Events.update Request body
是可写的
备选方案:
正如 OP 在评论部分提到的,您可以使用 Calendar.Events.patch 来更新您想要的属性。您未在请求中指定的字段保持不变。
我正在尝试更新 google 日历中的日历事件。我的代码目前如下:
function changeVisibilityForTwoWeeks() {
var calendarId = 'primary';
var now = new Date();
var inTwoWeeks = new Date();
inTwoWeeks.setDate(new Date().getDate()+14);
var events = Calendar.Events.list(calendarId, {
timeMin: now.toISOString(),
timeMax: inTwoWeeks.toISOString(),
singleEvents: true,
orderBy: 'startTime'
});
if (events.items && events.items.length > 0) {
for (var i = 0; i < events.items.length; i++) {
var event = events.items[i];
if (event.organizer.email.endsWith("@somedomain.com"))
) {
event.setVisibility(CalendarApp.Visibility.PRIVATE);
event = Calendar.Events.update(event, calendarId, event.getId());
}
}}
}
我得到的只是 GoogleJsonResponseException:API 调用 calendar.events.update 失败,出现错误:错误请求
有什么错误的建议吗?
谢谢!
当您尝试使用 Calendar.Events.update, you passed a complete Events resource 作为请求更新活动时 body。
请注意Events resource are writable when using Calendar.Events.update. Refer to the list of required and optional properties that could be modified/updated using Calendar.Events.update method in the Request body中的参数并非全部:
示例代码:
if (events.items && events.items.length > 0) {
for (var i = 0; i < events.items.length; i++) {
var event = events.items[i];
if (event.organizer.email.endsWith("@somedomain.com"))
{
var updateEvent = {
start: {
dateTime: event.start.dateTime
},
end: {
dateTime: event.end.dateTime
},
visibility: "private"
};
Logger.log(updateEvent);
event = Calendar.Events.update(updateEvent, calendarId, event.getId());
}
}}
之前:
之后:
重要提示:
我特意没有包括其他可选参数,以向您展示如果您没有将旧事件中的其他参数复制到更新事件中,它仍然会在您使用 Calendar.Events.update 时更新。请注意,标题未设置。
因此,请确保将必要的 information/properties 从您的旧事件复制到更新后的事件,并确保它基于 Calendar.Events.update Request body
是可写的备选方案:
正如 OP 在评论部分提到的,您可以使用 Calendar.Events.patch 来更新您想要的属性。您未在请求中指定的字段保持不变。