我正在尝试生成一个链接,将用户直接带到所选的Google日历事件。
我生成的链接与通过“日历”界面时到达的链接相同,但是,当用户选择该链接时,它会加载带有Google日历标题和“保留/任务”侧边栏的空白页面。没有实际的内容加载,并且在控制台中出现了Unchecked runtime.lastError: The message port closed before a response was received.
错误。这是下面的代码,但正如我所说-链接是相同的。
var events = [];
var today = new Date;
var myEvents = CalendarApp.getDefaultCalendar().getEventsForDay(today);
var calendarId = CalendarApp.getDefaultCalendar().getId();
myEvents.forEach(function(event){
var eventIdSplit = event.getId().split('@');
var newRecord = app.models.Calendar.newRecord();
newRecord.Date = event.getStartTime();
newRecord.Title = event.getTitle();
newRecord.Description = event.getDescription();
newRecord.calendarLink = 'https://calendar.google.com/calendar/r/eventedit/' + (Utilities.base64EncodeWebSafe(eventIdSplit[0] + " " + calendarId));
events.push(newRecord);
});
我搜索了错误,发现其他用户建议禁用所有扩展,但是我没有运行任何扩展。
答案 0 :(得分:1)
我发现了
newRecord.calendarLink = 'https://calendar.google.com/calendar/r/eventedit/' + (Utilities.base64EncodeWebSafe(eventIdSplit[0] + " " + calendarId));
在日历链接的末尾生成多个'=='
。这些相等的标志是中断的原因。
因此,将上面的代码编辑为以下代码即可解决此问题:
newRecord.calendarLink = 'https://calendar.google.com/calendar/r/eventedit/' + (Utilities.base64EncodeWebSafe(eventIdSplit[0] + " " + calendarId)).replace(/=/g, "");