使用 Google 应用脚本在工作表中创建日历事件并希望添加与会者

Creating calendar event in sheets using Google App Script and want to add attendees

我正在尝试使用 Google 应用程序脚本在 sheet 秒内创建日历事件(我对此很陌生)。 sheet 包含事件的详细信息(日期、时间、事件标题和来宾列表)以及日历 ID(这是一个培训日历)。我想让 end-user 简单地填写 sheet 上的信息,单击 'schedule now' 和脚本 运行 并将事件发送到所有提到的电子邮件地址在来宾名单中。

这里是 sheet 的例子:

这是代码的副本(我在 Google 开发者网站上找到了它,并试图对其进行调整以添加客人,但一直无法正常工作,而且真的不知道该去哪里有了这个。理想情况下,我希望来宾列表来自 sheet 而不是作为选项写入代码。

function scheduleTraining() {

  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var calendarId = spreadsheet.getRange("C3").getValue();
  var eventCal = CalendarApp.getCalendarById(calendarId);
  
  Logger.log(eventCal)
  
  var signups = spreadsheet.getRange("A5:C20").getValues();
 
  for (x=0; x<signups.length; x++) {
    
    var shift = signups[x];
    
    var startTime = shift[0]
    var endTime = shift[1]
    var title = shift[2]
    
    eventCal.createEvent(title, startTime, endTime, {
      location: 'remote',
      description: 'snacks provided',
    })
  }
  
}  

function onOpen(e) {
  SpreadsheetApp.getUi()
      .createMenu('Schedule Training')
      .addItem('Schedule Now', 'scheduleTraining')
      .addToUi();
}

如果有人可以提供帮助或对如何做得更好有任何想法,我会洗耳恭听!

谢谢!

问题:

  1. 电子表格文件中的日期是 strings/texts。你可以验证如果你这样做 =isDate(A7)。如果后者 returns FALSE 那么您没有有效的日期对象。如果您看到 official documentation,则需要传递日期对象而不是日期文本。

  2. 我的另一点是,你的范围是 "A5:C20",但你应该从 A7 开始。根据您的屏幕截图,第 5 行和 6 行不包含所需信息。


根据您的评论提出的问题:

how I can include inviting the guests when it's run

再次根据 documentation,您可以使用 高级参数选项 添加来宾,特别是 guests:

  eventCal.createEvent(title, startTime, endTime, {
      location: 'remote',
      description: 'snacks provided',
      guests: 'test1@gmail.com,test2@gmail.com'
    })  

guests is a type of string that contains a comma-separated list of email addresses that should be added as guests.