如何在不创建重复事件的情况下自动将 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”作为状态列。当你想把这个放在其他专栏时,请告诉我。
参考:
这部分有效...现在我需要自动化并仅创建添加到电子表格中的新记录。拜托,我需要帮助!
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”作为状态列。当你想把这个放在其他专栏时,请告诉我。