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

发布于 2025-01-25 20:25:43 字数 606 浏览 2 评论 0原文

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

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)
  }
}

This part works... now i need automate and create only new records add in the spreadsheet. Please, i need a help!

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)
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

贵在坚持 2025-02-01 20:25:43

例如,在您的情况下,为了检查重复的事件,如何使用状态列?修改脚本时,如下。

修改后的脚本:

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”作为状态列。运行此脚本时,当Colum“ Cl”没有“完成”的值时,将创建事件并将“ DOMOT”的值放在“ Cl”列中。当脚本再次运行时,在“ cl”列中具有“完成”的值的行被跳过。这样,并未创建重复的事件。

注意:

  • 此脚本使用列“ CL”作为状态列。当您想将其放入另一列时,请告诉我。

参考:

In your situation, for example, in order to check the duplicated event, how about using a status column? When your script is modified, it becomes as follows.

Modified script:

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");
}
  • This script uses the column "CL" as the status column. When this script is run, when the colum "CL" has no value of "done", the event is created and put the value of "done" to the column "CL". When the script is run again, the rows which have the value of "done" at the column "CL" are skipped. By this, the duplicated events are not created.

Note:

  • This script uses the column "CL" as the status column. When you want to put this for other column, please tell me.

Reference:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文