如何在Google Apps脚本中修复此脚本,以创建带有邀请的日历事件?

时间:2019-03-26 22:22:47

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

我将脚本链接到一个名为“发送到日历”的按钮,该按钮将出现在工作表的每个工作表上。我想要脚本:

1)在Google日历上创建一个新事件,其名称和日期基于按钮所在的工作表上的信息(每张工作表上的数据不同,都位于相同的单元格地址)。
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 Script - Creating Calendar Events

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

我们将不胜感激,特别是如果您能够添加一些有关代码部分工作方式的“ //”说明,则将非常感谢。我是剧本新手,想自学。感谢您的光临!

1 个答案:

答案 0 :(得分:0)

考虑以下代码:

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

我们将creating event with options与随后的事件着色一起使用。它对我有用(电子邮件已更改)。