Повторные вызовы Calendar.Events.list из скрипта Google Apps дают разные результаты - PullRequest
0 голосов
/ 25 февраля 2019

Каждый раз, когда я запускаю следующий код из скрипта Google App, прикрепленного к форме Google, я получаю разные результаты:

  var calendarId = 'a_valid_calendar_ID';
  var eventTime = '2019-03-05T07:00:00.000Z';
  var results = Calendar.Events.list(calendarId, {'singleEvents': true, 'timeMin': eventTime, 'maxResults': 1});
  Logger.log(JSON.stringify(results, null, 4))

При каждом запуске скрипта возвращаемое событие календаря является следующим календаремсобытие после события, которое было возвращено при предыдущем запуске сценария!Есть ли способ сбросить сеанс, чтобы results всегда ссылался на первое событие календаря в или после eventTime?

1 Ответ

0 голосов
/ 26 февраля 2019

Вы должны добавить опцию orderBy, в противном случае возвращается событие, которое имеет время начала после или timeMin, но было самым старым для редактирования .Поэтому код должен быть:

  var calendarId = 'a_valid_calendar_ID';
  var eventTime = '2019-03-05T07:00:00.000Z';
  var optionalArgs = {'singleEvents': true, 'timeMin': eventTime, 'maxResults': 1, 'orderBy': 'startTime'};
  var results = Calendar.Events.list(calendarId, optionalArgs);
  Logger.log(JSON.stringify(results, null, 4))

Я понял это, когда заметил, что возвращенный JSON имеет поле nextPageToken, несмотря на тот факт, что мне нужен только один результат - 'maxResults': 1

* 1013Причина того, что я получал разные результаты каждый раз, когда запускал свой собственный код, заключалась в том, что я использовал id события, чтобы изменить это событие.Если бы я затем выполнил тот же код с точно такими же аргументами, отредактированное событие больше не было самым старым, которое было отредактировано с помощью startTime после timeMin, и поэтому мне давали следующее событие после этого!

Поведение этого API несколько нелогично и может быть улучшено с помощью:

  1. заставить поведение по умолчанию использовать необязательные аргументы {'singleEvents': true, 'orderBy': 'startTime'}
  2. изменить имя maxResults опция maxResultsPerPage, чтобы сделать явным то, что max относится к

. Тем временем документы должны быть отредактированы, чтобы привлечь внимание к этому несколько непредсказуемому поведению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...