【问题标题】:How do I fix this script in Google Apps Script to create a calendar event with invites?如何在 Google Apps 脚本中修复此脚本以创建带有邀请的日历活动?
【发布时间】:2019-03-26 22:22:47
【问题描述】:

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

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

感谢您提供任何帮助,特别是如果您能够添加一些“//”解释有关部分代码的工作原理。我是脚本新手,并试图自学。感谢收看!

【问题讨论】:

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


    【解决方案1】:

    考虑以下代码:

    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 和后续的事件着色。它对我有用(电子邮件已更改)。

    【讨论】:

    • 这太好了,谢谢!它工作得很好。我正在尝试为事件添加额外的电子邮件提醒,据此:developers.google.com/apps-script/reference/calendar/…我在这里的尝试不会影响事件的提醒。你能看到我错过了什么吗? var minutesBefore = 40320 var calendar = CalendarApp.getCalendarById('example@gmail.com'); var event = calendar.createEvent(vEventName, start, end, { guests: 'ex1@mail.com,ex@mail.com', sendInvites: true, addEmailReminder: (minutesBefore) });
    • 您对上述链接是正确的。但是您只能为准备好的 CalendarEvent 对象添加提醒。将其包含在创建阶段的选项中是错误的。类似于着色写:event.addEmailReminder(minutesBefore);
    • 成功了!非常感谢您的帮助。您在代码中插入的 cmets 也非常有帮助。我想我学到了一些东西。 =)
    猜你喜欢
    • 2014-11-16
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多