Google Apps脚本:如何检查日历事件是否已被手动标记为已删除

问题描述 投票:2回答:1

我编写了一个Google Apps脚本,可将电子表格中保存的事件添加到Google日历中。每个事件都存储日历事件的ID,以便在电子表格中的事件被修改时可以更新它。事件仍然可以在日历中手动删除,因此我希望脚本检测到这一点并重新创建事件。不幸的是,我在null对象上调用getEventById(...)时不能简单地检查calendar,因为即使被删除,这个函数似乎返回一个有效的calendar对象。

CalendarEvent API文档似乎没有指向检查事件是否已通过UI /手动删除的方法。有没有办法通过Google Apps API访问此媒体资源?

即使永久删除已删除的事件也无法解决问题,但它会阻止对返回的event对象进行修改。

我可以用什么来检查事件(仍然存在)是否已被“删除”?我唯一能想到的就是get/setTag()对象的CalendarEvent方法。

或者,this问题看起来很相似,但感觉应该有比搜索已删除事件列表更好的方法,而且我不确定这会解决让ID字符串返回“永久”的有效事件的问题“删除了。

Example

var calendarId = "[email protected]"
var calendar = CalendarApp.getCalendarById(calendarId);

var event = calendar.createEvent(...);

// Event is then deleted manually in calendar but 
// ID has been saved in spreadsheet (or elsewhere)

if (calendar.getEventById("the-deleted-event-id") == null) {
    // Create the event (This is never reached)
} else {
    // Update the event
}
javascript google-apps-script google-calendar-api
1个回答
0
投票

我花了很长时间来解决这个问题,我无法理解为什么没有更好的方法来解决它,直接由CalendarApp解决。你需要的是这个:

var eventId = "[email protected]".split("@")[0];
if(Calendar.Events.get("yourCalendarId", eventId).status === "cancelled")
        CODE://what to do if event was deleted (manually)

笔记:

  1. 由于API v3.0仅用作eventid @之前的部分,所以你需要拆分(剥离休息)
  2. 您需要首先激活Calendar API v3.0。

你会在这个问题上找到更多信息:Checking a Google Calendar Event's Existence

© www.soinside.com 2019 - 2024. All rights reserved.