无法获取要在单元格中链接的日历事件ID

时间:2019-11-19 08:58:30

标签: javascript google-apps-script google-sheets google-sheets-formula

美好的一天!

感谢我们的社区,我能够使用googlesheets创建不同的日历活动。但是,我现在想将创建的事件的超链接放在日历详细信息旁边的栏中。我也已经读过关于同一问题here的信息,但似乎无法遵循。答案是“对于类型为CalendarEvent的给定event对象和给定calendarId的对象,我很困惑。

在我的代码中,尽管eventinviteID = eventCal.getEventById(calendarId).split('@'),而calendarIdcalendarId = Session.getActiveUser().getEmail()。但是,当我现在使用base64对其进行编码时,生成的eventID与我的日历中生成的eventID不匹配。我已经尝试了几次迭代,但仍然无济于事。

请在下面查看我的代码(我只添加了我认为与轻松阅读相关的行):

    function sendInvites(){
  var sheet = SpreadsheetApp.getActiveSheet();
  var calendarId = Session.getActiveUser().getEmail();
  var eventCal = CalendarApp.getCalendarById(calendarId);
      eventCal.createEvent(title, sDateTime, eDateTime, details);
      var inviteID = eventCal.getEventById(calendarId).split('@');
      var inviteURL = "https://calendar.google.com/calendar/r/eventedit/" + Utilities.base64Encode(inviteID[0]+""+calendarId);
      sheet.getRange(startrow + x, 26).setValue('=HYPERLINK("' + inviteURL + '","View")');
      }

我的怀疑是我没有正确提取eventID或calendarId。希望您对此提供指导。

谢谢!

1 个答案:

答案 0 :(得分:1)

您从event方法调用返回的createEvent()对象中获取事件ID。我已更正了您的代码,以便它实际上获得与eventedit URL一起使用的正确标识符:

function sendInvites(){
  var sheet = SpreadsheetApp.getActiveSheet();
  var calendarId = Session.getActiveUser().getEmail();
  var calendar = CalendarApp.getCalendarById(calendarId);
  var event = calendar.createEvent(title, sDateTime, eDateTime, details);
  var inviteID = Utilities.base64Encode(event.getId().split("@")[0] + " " + calendarId);
  var inviteURL = "https://calendar.google.com/calendar/r/eventedit/" + inviteID;
  sheet.getRange(startrow + x, 26).setValue('=HYPERLINK("' + inviteURL + '","View")');
}