如何在不创建重复事件的情况下自动将 Google 表格中的日程添加到日历中?有没有办法每天自动 运行 ?

how to automatically add a schedule from Google Sheets into Calendar without create a duplicate event? Is there a way to run daily automatically?

这部分有效...现在我需要自动化并仅创建添加到电子表格中的新记录。拜托,我需要帮助!

function scheduleShifts() {
  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var calendarId = spreadsheet.getRange("Dados!CJ3").getValue();
  var eventCal = CalendarApp.getCalendarById(calendarId);
  var signups = spreadsheet.getRange("Dados!CI5:CK3500").getValues();
  for (x=0; x<signups.length;x++) {
    var shift = signups[x];
    var startTime = new Date(shift[0]);
    var endTime = new Date(shift[1]);
    var volunteer= shift[2];
    eventCal.createEvent(volunteer,startTime,endTime);
    Utilities.sleep(300)
  }
}

在你的情况下,例如,为了检查重复的事件,使用状态列怎么样?当你的脚本修改后,就变成了下面的样子

修改后的脚本:

function scheduleShifts() {
  var statusColumn = "CL"; // As a sample, this script uses the column "CL".
  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var calendarId = spreadsheet.getRange("Dados!CJ3").getValue();
  var eventCal = CalendarApp.getCalendarById(calendarId);
  var signups = spreadsheet.getRange("Dados!CI5:CL3500").getValues();
  var rangeList = [];
  for (x = 0; x < signups.length; x++) {
    var shift = signups[x];
    if (shift[3] == "done") continue;
    rangeList.push(statusColumn + (x + 5));
    var startTime = new Date(shift[0]);
    var endTime = new Date(shift[1]);
    var volunteer = shift[2];
    eventCal.createEvent(volunteer, startTime, endTime);
    Utilities.sleep(300)
  }
  spreadsheet.getRangeList(rangeList).setValue("done");
}
  • 此脚本使用列“CL”作为状态列。当此脚本为 运行 时,当“CL”列没有“done”值时,将创建事件并将“done”的值放入“CL”列。当脚本再次为 运行 时,将跳过“CL”列中值为“done”的行。这样,不会创建重复的事件。

注:

  • 此脚本使用列“CL”作为状态列。当你想把这个放在其他专栏时,请告诉我。

参考: