【问题标题】:How to fix the problem with duplicates when synchronizing Google tables and Google Calendar同步 Google 表格和 Google 日历时如何解决重复问题
【发布时间】:2021-06-27 13:26:05
【问题描述】:

我正在使用一个简单的脚本来同步 google 表格和 google 日历,效果很好。但是在添加新事件时,每次添加之前的重复事件,如何才能消除这个问题呢?谢谢。

我的脚本

function scheduleShifts() {
  const spreadsheet = SpreadsheetApp.getActiveSheet();
  const calendarId = spreadsheet.getRange("E1").getValue();
  const eventCal = CalendarApp.getCalendarById(calendarId);
  const signups = spreadsheet.getRange("B2:D15").getValues();
  for (let x = 0; x < signups.length; x++) {
    const shift = signups[x];
    const name = shift[0];
    const startTime = shift[1];
    const endTime = shift[2];
    eventCal.createEvent(name, startTime, endTime);
  }
}

【问题讨论】:

  • 您可以获取最短开始时间和最长结束时间并搜索该范围内的事件标题,然后他们会使用 indexOf() 或 includes() 检查您的新名称是否在最后一个;
  • 最适合您的解决方案取决于您如何使用此电子表格。你能给我们解释一下你是如何使用它的吗?为什么范围总是B2:D15? (您是否在重复使用电子表格?)
  • @Martí 我不能说我将桌子用于其预期目的。该表的真正目的是从 Google 获取数据形式“姓名”“电子邮件”“假期开始”“假期结束”,然后将它们与 Google 日历同步(使用我上面指出的脚本)唯一的问题是我想在表中更改时在日历中实现更新数据,但不重复旧事件)
  • @Cooper 谢谢。当我了解更多信息时,我会尝试实现它:D
  • @ArtemLisovets 如果您找到了一种使其正常工作的方法,如果您愿意分享,我很乐意看到您的解决方案。

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


【解决方案1】:

我认为最简单的方法是添加一列来保存每行的事件 ID。当一行被修改时,您可以检查是否设置了事件 ID。如果是,您可以编辑已经存在的事件;如果不是,则创建一个新的。

我留下一些您可能必须使用的功能的参考。另外,如果有不清楚或需要进一步解释的地方,请告诉我们:)

参考文献

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-12
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 2022-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多