如何在Google日历中添加“邀请我”链接

时间:2014-08-11 04:17:48

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

我发现有人添加"邀请我"链接在Google日历中,如下所示。我已经尽了最大努力,但在有人点击某个活动时找不到添加此链接的方法。

enter image description here

2 个答案:

答案 0 :(得分:2)

Molk是正确的,你需要设置AnyyCanAddSelf(true)。

我将如何处理将脚本部署为Web应用程序,该应用程序获取日历事件ID的查询参数,即Session.getActiveUser()。getEmail(),并将它们添加到日历事件中。我会在主日历的“描述”字段中创建URL(如截图,使用已部署脚本URL的URL并为id添加查询参数。

一个例子看起来像这样:

var calId = 'yourdomain.com_459nd7pqmn5irsqgn8p91febe4@group.calendar.google.com';

function inviteMe(){
  try{
    var cal = CalendarApp.getCalendarById(calId);
    var start = new Date();
    var end = new Date();
    start.setHours(13);
    end.setHours(14);

    var event = cal.createEvent("Add Me Test", start,end);
    event.setAnyoneCanAddSelf(true);
    var eventId = event.getId();
    var urlString = '<a href="' + ScriptApp.getService().getUrl() +'?eId=' + eventId + '" target="_blank">Invite Me</a>';
    var desc ='Event details';
    desc += '\n\n' + urlString;
    // now that we have the url built out, add the description
    event.setDescription(desc);
  }catch(err){
    Logger.log(err.lineNumber + ' - ' + err);
    ;
  }
}

function doGet(event){
  try{
    // shorten the event parameter path;
    var param = event.parameter;
    // get the calendar event id passed in the query parameter
    var eventId = param.eId;
    var cal = CalendarApp.getCalendarById(calId);
    var guest = Session.getActiveUser().getEmail();

    var event = cal.getEventSeriesById(eventId);
    event.addGuest(guest);

    return ContentService.createTextOutput("You have been added to the event: " +         event.getTitle());
  }catch(err){
    Logger.log(err.lineNumber + ' - ' + err);
  }
}

它看起来会是这样的: 在活动详细信息中,单击“邀请我”链接 invite me

处理完成后,使用ContentService显示通知。  enter image description here

最后在用户日历中查看日历 completed entry

事件所有者将不会在其描述区域中看到链接,只会看到原始html锚文本(请参见下面的屏幕截图)。 Google日历会为其他人呈现链接;我假设为了便于编辑,因为描述字段只是一个textarea输入,没有WYSIWYG控件。 Event Owner's View

答案 1 :(得分:1)