【发布时间】:2018-01-11 03:55:47
【问题描述】:
我的整个代码中有一个非常基本的问题,这让我头疼了几天。我已经对这个问题进行了广泛的研究,但是无法找到确切的解决方案(或者我错过了我可能找到的解决方案)。这里是:
我有一个电子表格,用于登录 Google 日历活动及其属性,包括活动 ID。有时,我手动清理 Google 日历,只想运行一个代码来检查日历中是否存在事件,如果不删除该行。我的代码是:
function cleanCal(calid, eventid) {
var calid = 'my calendar id';
var eventid = 'event id';
var event = CalendarApp.getOwnedCalendarById(calid).getEventById(eventid);
if (event) {
event.deleteEvent();
// clean-up sheet
} else {
// clean-up sheet
}
}
基本上如果事件在日历中,代码应该先删除它然后清理工作表,如果它不存在,它应该只清理工作表。但是,在执行代码时,虽然日历事件不存在,但 if 语句返回 true 并在尝试删除事件时引发错误,因为它实际上不存在。尽管事件不存在,但我一直无法找出 event 对象返回 true 的原因、方式和原因。我哪里做错了??感谢您的回复,非常感谢您的帮助。
[编辑] 这是我用来检查日历 API v3 是否存在的代码
function verifyCalendarEvent_OLD(calid, eventid) {
var cal = CalendarApp.getCalendarById(calid)
var exists = true;
var response = Calendar.Events.list(
calid, {
showDeleted: true,
fields: "items(id,status,summary)"
}
);
for (var i = 0; i < response.items.length; i++) {
if (response.items[i].id == eventid.split("@")[0] && response.items[i].status == "cancelled") {
exists = false;
break;
}
}
return exists;
}
【问题讨论】:
-
在这里发布我认为理想的解决方案:stackoverflow.com/a/62614117/5488127
标签: google-apps-script google-calendar-api