我正在尝试使用 Google Apps 脚本创建一个函数,当我在我的 Google 表格中运行自动化时,它会在共享的 Google 日历上创建一个事件(或多个事件)。
我是编码的新手,并尝试根据客户的要求完成此操作,因此希望得到任何帮助/反馈!
我看过一些视频并参考了一些文档。
这是我编码的当前状态:
function createcalendarevent() {
let communityCalendar = CalendarApp.getCalendarById("c_189f99fba6aef7d890a31b1bc2781f510052cab494ff152db93cf6cb7cb0d2e1@group.calendar.google.com");
let sheet = SpreadsheetApp.getActiveSheet();
let schedule = sheet.getDataRange().getValues();
var rangeList = sheet.getRangeList(['D4', 'B2:C3']);
sheet.setActiveRangeList(rangeList);
};
附上工作表的屏幕截图。
您可以在您的脚本中使用名为
createEvent()的
CalendarApp
服务方法与 getDisplayValues()。此外,根据您的工作表数据,您有一些行还没有任何开始时间和结束时间,需要在创建事件之前filtered,以减少过程中的任何错误。您可以尝试下面这个经过调整的脚本:
function createcalendarevent() {
let communityCalendar = CalendarApp.getCalendarById(`c_189f99fba6aef7d890a31b1bc2781f510052cab494ff152db93cf6cb7cb0d2e1@group.calendar.google.com`);
let sheet = SpreadsheetApp.getActive().getActiveSheet();
let rawData = sheet.getRange(`A1:C`).getDisplayValues().filter(x => x.join().length > 2);
/** Iterate through each rows in your sheet Columns A, B, C
* but only process rows with valid time values (rows with Start Time & End Time)
* & create an event for each valid data */
rawData.forEach( y => new Date(y[1]) != `Invalid Date` && new Date(y[2]) != `Invalid Date` ? createEvent(y[0],y[1],y[2],communityCalendar) : null )
};
function createEvent(eventName,startDate,endDate,communityCalendar) {
// Creates an event
var event = communityCalendar.createEvent(eventName,
new Date(startDate),
new Date(endDate));
Logger.log(`Created "${eventName}" with Event ID: ${event.getId()}`);
}
日志结果:
创建的示例事件: