【发布时间】:2014-08-11 04:17:48
【问题描述】:
我发现有人在 Google 日历中添加了“邀请我”链接,如下所示。我已经尽力了,但是当有人点击某个事件时找不到添加此链接的方法。
【问题讨论】:
标签: google-apps-script google-calendar-api
我发现有人在 Google 日历中添加了“邀请我”链接,如下所示。我已经尽力了,但是当有人点击某个事件时找不到添加此链接的方法。
【问题讨论】:
标签: google-apps-script google-calendar-api
Molk 是正确的,你需要 setAnyoneCanAddSelf(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);
}
}
它看起来会是这样的: 在活动详情中,点击邀请我链接
处理后,使用 ContentService 显示通知。
最后在用户日历中查看日历
事件所有者将不会在他们的描述区域中看到链接,只会看到原始的 html 锚文本(请参见下面的屏幕截图)。谷歌日历为其他人呈现链接;我假设是为了便于编辑,因为描述字段只是一个文本区域输入,没有所见即所得的控件。
【讨论】:
尝试使用“setAnyoneCanAddSelf(anyoneCanAddSelf)”
【讨论】: