首页 > 解决方案 > 如何在 Google Apps 脚本中修复此脚本以创建带有邀请的日历活动?

问题描述

我将一个脚本链接到一个名为“发送到日历”的按钮,该按钮将位于我的工作表中的每张纸上。我希望脚本:

1)在谷歌日历上创建一个新事件,其名称和日期基于按钮所在工作表上的信息(每张工作表不同的数据,都位于相同的单元格地址)。
2) 在开始日期前 6 周为所有与会者设置提醒。
3)邀请/添加客人(可能通过将活动作为电子邮件发送到非Gmail地址?我对它的外观很灵活,只要我可以自动邀请客人。)
4)设置所有这些的colorId邀请到“3”(紫红色)或默认事件颜色以外的任何颜色。(这很好,但可选。)

我一直在从 Google 的示例和我在这个网站上找到的一些答案中拼凑脚本,但没有一个完全符合我的要求。我还启用了 Google 高级服务(https://developers.google.com/apps-script/guides/services/advanced),因为我读到问题可能出在 Google API 权限中,但自从我启用以来已经有几个小时了它和事情仍然无法正常工作。我不确定这是否有所作为。

我认为这很接近,但它返回 404 错误,我不知道为什么。

function createEvent() {
  var vSS = SpreadsheetApp.getActiveSpreadsheet();
  var vS = vSS.getActiveSheet(); 
  var vEventName = vS.getRange("M5").getValue();
  var start = vS.getRange("M6").getValue();
  var end = vS.getRange("H3").getValue();
var calendar = CalendarApp.getCalendarById(
 'example@gmail.com');
var event = calendar.createEvent; {vEventName;
 new Date(start);
 new Date(end);                             
 attendees: [
      {email: 'example@example.com'},
      {email: 'example@example.com'}
    ];
    colorId: 3
  };
  event = Calendar.Events.insert(event, calendar);
  Logger.log('Event ID: ' + event.id);
}

这会成功在我的日历上创建一个事件,但不会添加客人、创建提醒或更改颜色。(在这里发现:Google Apps 脚本 - 创建日历事件

function createEvent() {
var vSS = SpreadsheetApp.getActiveSpreadsheet();
var vS = vSS.getActiveSheet();  
var vStartDate = vS.getRange("M5").getValue();
var vEndDate = vS.getRange("M6").getValue();  
var vEventName = vS.getRange("H3").getValue();
var calendar = CalendarApp.getCalendarById(
 'example@gmail.com');
var event =  calendar.createEvent(vEventName,
 new Date(vStartDate),
 new Date(vEndDate));
Logger.log('Event ID: ' + event.getId());
}

任何帮助表示赞赏,特别是如果您能够添加一些关于代码部分如何工作的“//”解释。我是脚本新手,并试图自学。感谢您的关注!

标签: google-apps-scriptgoogle-calendar-api

解决方案


考虑以下代码:

function createEvent() {
  var vSS = SpreadsheetApp.getActiveSpreadsheet();
  var vS = vSS.getActiveSheet(); 
  var vEventName = vS.getRange("M5").getValue();
  // M6 and H3 cells should contain valid dates
  var start = vS.getRange("M6").getValue();
  var end = vS.getRange("H3").getValue();
  var calendar = CalendarApp.getCalendarById('example@gmail.com');
  // Creating event with options (guests list)
  var event = calendar.createEvent(vEventName, start, end, {
    // a comma-separated list of email addresses that should be added as guests
    guests: 'guest1@gmail.com,guest2@mail.ru',
    sendInvites: true
  });
  // Set desired color to the created event
  event.setColor(CalendarApp.EventColor.MAUVE);

  Logger.log('Event ID: ' + event.id);
}

我们使用了带有选项的创建事件以及随后的事件着色。它对我有用(电子邮件已更改)。


推荐阅读