如何修复“未选中的runtime.lastError:消息端口在收到响应之前已关闭”。链接到G-Cal活动时?

时间:2019-04-23 07:09:41

标签: google-chrome google-apps-script google-app-maker

我正在尝试生成一个链接,将用户直接带到所选的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);
  });

我搜索了错误,发现其他用户建议禁用所有扩展,但是我没有运行任何扩展。

1 个答案:

答案 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, "");