Как получить идентификатор события моего календаря Google в правильном формате, который API-интерфейс Календаря должен прочитать в моем сценарии? - PullRequest
2 голосов
/ 02 апреля 2019

Я пытаюсь написать сценарий, который будет выполнять и: 1) обновление дат и заголовка существующего события в моем календаре Google на основе дат, указанных в моем листе И 2) отправку обновленных дат по электронной почте на мероприятиегости (поэтому событие в их календарях обновляется).

Мне удалось успешно обновить даты и заголовок моего события, используя CalendarApp.getEventById (eventId).Тем не менее, я бы действительно хотел бы, чтобы уведомления о событиях отправлялись каждому гостю после обновления дат события.Это не представляется возможным сделать с помощью CalendarApp (если это возможно, пожалуйста, скажите мне, как!).После борьбы с этим в этом вопросе я сейчас пытаюсь использовать Calendar.Events.patch как для обновления события, так и для отправки обновления всем гостям события.

* проблема, с которой я постоянно сталкиваюсь , заключается в том, что eventId, зарегистрированный на моем листе моим скриптом createEvent, имеет формат, заканчивающийся на "@ google.com".CalendarApp прекрасно читает этот формат, но не может быть прочитан Calendar.Events.patch.Я пытался закодировать его в base64, так как этот формат выглядит как искомый Calendar.Events.patch, но я думаю, что я все еще что-то упускаю.

Когда я запускаю код ниже, ошибкавозвращает «API-вызов calendar.events.get завершился неудачно с ошибкой: не найдено»@ google.com eventId - этот инструмент кодирования .Я просто не знаю достаточно, чтобы это исправить.

Пожалуйста, поймите, что я чрезвычайно новичок в написании сценариев, и я уже более недели борюсь с этой проблемой.Я думаю, что я многому научился после того, как последний вопрос я написал, так как теперь у меня есть лучшее понимание моей точной проблемы, но я все еще не знаю решение.Я пытаюсь научить себя, как это сделать, читая вопросы на этом сайте, читая информацию Google (которую я, к сожалению, в основном не понимаю) и просматривая видео на YouTube.Если я прошу слишком много сценария, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 06 апреля 2019
  • Вы хотите получить событие, используя идентификатор события.
  • Вы хотите обновить событие и отправить электронное письмо пользователям.
    • Вы хотите изменить имя события, время начала и окончания события.
  • eventId - это 1c0tqtn56c1tdo1i0fus66f53g@google.com, которое является текстовым значением.
  • vEventName - это Ethiopia Limu, что является текстовым значением.
  • newstartTime - это 6/10/2019, который является объектом даты.
  • newendTime - это 7/30/2019, который являетсяобъект даты.

Если мое понимание верно, как насчет этой модификации?

Точки модификации:

  • В вашем сценарии кажется, чтоскрипты для извлечения события и обновления события различны.Так что в этой модификации их разделили.
    • Вы можете увидеть событие в журнале при запуске сценария.
    • Событие обновлено.
  • О идентификаторе события выможно использовать 1c0tqtn56c1tdo1i0fus66f53g из 1c0tqtn56c1tdo1i0fus66f53g@google.com в качестве идентификатора события.

Когда они отражаются в вашем сценарии, он становится следующим.

Измененный сценарий:

function updateEvent(calendarId, eventId, email) {
  var vSS = SpreadsheetApp.getActiveSpreadsheet();
  var vS = vSS.getActiveSheet();
  var eventId = vS.getRange("R2").getValue();
  var vEventName = vS.getRange("M3").getValue();
  var newstartTime = vS.getRange("M5").getValue();
  var newendTime = vS.getRange("M6").getValue();

  var eid = eventId.split("@")[0]; // Added

  // Retrieve event
  var event = Calendar.Events.get(calendarId, eid);
  if(event.attendees) {
    event.attendees.push({
      email: email
    });
  } else {
    event.attendees = new Array({email: email});
  }
  Logger.log(event)

  // Update event
  var resource = {
    start: {dateTime: newstartTime.toISOString()},
    end: {dateTime: newendTime.toISOString()},
    summary: vEventName,
  };
  Calendar.Events.patch(resource, calendarId, eid, {sendUpdates: "all"})
}

Примечание:

  • Если при обновлении события возникает ошибка, связанная с date и time, пожалуйста, подтвердите, являются ли newstartTime и newendTime объектом даты соответственно.

Ссылка:

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