Как я могу исправить 'Unchecked runtime.lastError: Порт сообщения закрыт до получения ответа.' при связывании с событиями G-Cal? - PullRequest
2 голосов
/ 23 апреля 2019

Я пытаюсь создать ссылку, по которой пользователь попадает прямо к выбранному событию Календаря 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 Ответ

1 голос
/ 24 апреля 2019

Я обнаружил, что

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