CalendarApp中的CalendarEvent ...手动删除=仍可通过Apps脚本访问?

时间:2013-12-19 00:54:19

标签: google-apps-script google-calendar-api

我在日历上有几百个事件,都是由Apps脚本创建的。我将他们的ID存储在ScriptDB中,并有一个UI来管理它们。

当我从我的日历中删除 手动 (通过Google日历界面)的事件时,它们会消失,或者我想。事实证明,当我加载管理它们的UI时,我会尝试通过以下方式检索事件:

calendar.getEventSeriesById(eventID)

我可以正常访问活动,就像活动仍然在日历上一样。我 老实说这对我没有任何意义,但我会给出两分钱,看看你们是否可以想出为什么会发生这种情况的原因。这是我的用例的破坏:

  1. 通过GAS创建活动(非手动)。
    • 事件现在在日历上,事件ID存储在ScriptDB中
  2. 加载UI - 现在我们可以更改活动的日期,开始时间,结束时间,位置,描述等,或者我们可以删除它
    • 此处没有任何问题,即使事件被标记为删除,一切功能正常且符合预期
  3. 有人出现并在日历上看到了一个事件,然后说哦,让我们继续删除,我们会这样做吗?
    • 这就是问题所在,因为不可能(我几乎可以肯定)检测到某个事件已被手动删除将ScriptDB中的eventID设置为null
  4. 一段时间之后......加载用户界面... woah ,获取已删除事件的事件代码仍然有效吗? 什么的?

    [13-12-18 16:48:17:941 EST] This is an event that was manually deleted: CalendarEventSeries
    [13-12-18 16:48:17:943 EST] This is the location of the manually-deleted event: C/A
    
  5. 现在我们可以访问该事件,我们可以进行任何更改吗? 剧透:答案是' ':

    • 如果我更改日期,开始时间,结束时间或地点:
  6. enter image description here

    我在Logger中收到以下信息(一些重要信息):

    [13-12-18 19:34:12:208 EST] EVENT DATE/TIME CHANGED?: true
    [13-12-18 19:34:12:534 EST] Manual change was made to the calendar event. Getting event by ID now...
    [13-12-18 19:34:12:980 EST] Event to update (by ID): CalendarEventSeries
    
    • 此事件已删除,但显然我们仍然可以对其进行更改...

    所以我试图捕捉日历事件被删除的情况,但是因为在按ID(或该时间间隔)获取之后,实际上返回为CalendarEventSeries 预期结果 null0或其他 falsey-value

    因为我知道我' m 删除了该活动的人,我想哦,我只是在我的用户界面中将其标记为删除!猜猜:失败:    - 我尝试拨打calEvent.deleteEventSeries();,但收到了以下错误:

    enter image description here

    所以:我唯一的选择是用calEvent.deleteEventSeries();块围绕try-catch-finally,我认为这是一个很好的解决方案。但是,我想知道为什么手动删除日历仍然允许我们通过GAS访问?反之亦然:如果我通过GAS删除事件,确实实际上会从日历中删除它。但是,手动从日历中删除并不会删除Apps脚本对事件的访问权限。

    最后问题:这个真的CalendarApp和Apps脚本的预期行为吗?或者这是意外或未定义的行为?除了deleteEventSeries()区块中的try-catch之外,还有其他解决方法吗?

    编辑:根据original issue on the issue tracker,即使您通过Apps脚本删除了该事件,然后尝试使用相同的iCalId访问该事件,它仍会返回该事件。所以我想它不仅仅是手动删除,而是一般性的删除。我没有注意到这一点,因为当我删除事件时,我会删除ScriptDb中的ID。需要注意的事情!

1 个答案:

答案 0 :(得分:1)

坏消息,克里斯。这已成为众所周知的问题很长一段时间。 9个月前,GAS团队在一份内部错误报告中对Issue 2480进行了分类和复制。

您的问题中有更多详细信息,问题中出现的内容 - 您应该在此处指出问题添加注释!