【问题标题】:check if event exists before adding it from google sheet to calendar在将事件从谷歌工作表添加到日历之前检查是否存在
【发布时间】:2019-03-06 15:34:07
【问题描述】:

我有一个脚本可以从工作表更新日历。 有没有办法获取事件的 eventID,如果它不存在我会添加到日历中?

要创建的事件的 ID 是什么(标题、开始、停止)

然后,我可以对照现有事件的 eventID 检查它并添加 (如果还没有的话)。 我认为这比在添加新事件或继续前进之前检查现有事件以匹配所有属性要快

【问题讨论】:

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


    【解决方案1】:

    我认为 ID 的工作方式并不像您认为的那样(作为它们内部信息的某种散列)。你能检查你想要的标题的日期吗?我认为这就足够了。

    这是一个帮助您入门的脚本,它会在接下来的 20 天内找到下一次“示例会议”。您可以轻松地将范围缩小到一天,然后添加一个“else”来创建新会议。

    function insertItem() {
    
    
          var fromDate = new Date(); //This is Today
          var toDate = new Date();
          toDate.setDate(toDate.getDate()+20);
          Logger.log("From "+fromDate+" to "+toDate);
       var calendar = CalendarApp.getDefaultCalendar();
      var events = calendar.getEvents(fromDate, toDate);
    
    
      for(var i=0; i<events.length;i++)
        {
          var ev = events[i];
          var title = calendar.getEventSeriesById(ev.getId()).getTitle();
    
    
          if (title.indexOf("Sample Meeting")>-1){
            var start = ev.getStartTime();
            Logger.log("Found Team Meeting");
    
              var id = ev.getId();
              var date = ev.getStartTime();
              var desc = ev.getDescription();
    
    
              return;
    
              }
    
    
        }
      }
    

    【讨论】:

    • 谢谢 - 我错误地假设 ID 是从输入数据生成的,您是正确的。所以检查标题/时间/内容将是要走的路
    【解决方案2】:

    可以做到,但要花点功夫。

    默认情况下会自动生成事件 ID。 However, you can generate custom ids for an event as long as they conform to Google's format requirements。因此,您必须自己管理这些事件 ID 的生成。

    您必须确保 id 是唯一的,因此您可能希望将其基于与事件相关的输入组合。

    一旦你有了某种生成唯一 id 的方法,你可以使用它直接通过 id 获取事件,但你必须使用 Advanced Calendar Service(内置服务不允许通过事件 id 查找,但是它确实允许通过 iCalUID 进行查找)。

    【讨论】:

      猜你喜欢
      • 2012-11-08
      • 1970-01-01
      • 2014-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多