基本的 Google Apps 脚本功能

问题描述 投票:0回答:1

我正在尝试使用 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);

};

附上工作表的屏幕截图。

google-apps-script google-sheets google-calendar-api
1个回答
0
投票

建议

您可以在您的脚本中使用名为

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()}`);
}

演示

日志结果:

创建的示例事件:

© www.soinside.com 2019 - 2024. All rights reserved.