Добавление нескольких идентификаторов календаря и адресов электронной почты участников к событиям

У меня есть скрипт для автоматизации нашего календаря на основе расписания Google Sheet, которое у нас есть. Он работает при добавлении события в определенный календарь, но я хотел бы добавить в сценарий отдельные календари, а также автоматически добавить группу Google в качестве гостей к событию, чтобы уведомления выходили как обычные события календаря Google.

   function scheduleShifts() {
/**
  Task 1) Open the Event Calendar.
**/
var spreadsheet = SpreadsheetApp.getActive();
var calendarID = spreadsheet.getRange("C2").getValue();
var eventCal = CalendarApp.getCalendarById(calendarID);

/**
  Task 2) Pull each shift information into the code, in
  a form that the code can understand. 
**/
var signups = spreadsheet.getRange("A5:C100").getValues();

/**
    [
      [11/9/2019 0:00:00,11/10/2019 0:00:00,Werdah On-Call],
      [11/10/2019 0:00:00,11/11/2019 0:00:00,Lucas On-Call],
      [11/16/2019 0:00:00,11/17/2019 0:00:00,Aiden On-Call],
      [11/17/2019 0:00:00,11/18/2019 0:00:00,Werdah On-Call],
      [11/23/2019 0:00:00,11/24/2019 0:00:00,Mayra On-Call],
      [11/24/2019 0:00:00,11/25/2019 0:00:00,Kyle On-Call],
      [11/30/2019 0:00:00,12/1/2019 0:00:00,Cavan On-Call],
      [12/1/2019 0:00:00,12/2/2019 0:00:00,Adam On-Call],
      [12/7/2019 0:00:00,12/8/2019 0:00:00,Hillary On-Call],
      [12/8/2019 0:00:00,12/9/2019 0:00:00,Melissa Pino On-Call],
      [12/14/2019 0:00:00,12/15/2019 0:00:00,Kristi On-Call],
      [12/15/2019 0:00:00,12/16/2019 0:00:00,Kevin On-Call],
      [12/21/2019 0:00:00,12/22/2019 0:00:00,Alice On-Call],
      [12/22/2019 0:00:00,12/23/2019 0:00:00,Carro On-Call],
      [12/28/2019 0:00:00,12/29/2019 0:00:00,Sruthi On-Call],
      [12/29/2019 0:00:00,12/30/2019 0:00:00,Tara On-Call]
    ]  
**/

/**
  Task 3) Do the work!
**/
for (x=0; x<signups.length; x++) {

var shift = signups[x];

var startTime = shift[0];
var endTime = shift[1];
var oncall = shift[2];

eventCal.createEvent(oncall, startTime, endTime);
  }
}

/**
  Task 4) Make it easy to ue.
**/
function onOpen(){
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Sync to Calendar')
      .addItem('Schedule shifts now','scheduleShifts')
      .addToUi();
}

person Lucas Hammonds    schedule 12.11.2019    source источник
comment
Можете ли вы привести очень конкретный пример того, что вы хотите сделать? Что-то, что мы можем ощутимо решить с помощью небольшого набора тестовых данных? Я не уверен, что вы просите редактировать чужой календарь без их разрешения?   -  person CodeCamper    schedule 12.11.2019
comment
Что я хочу сделать, так это обновить ячейки в определенных столбцах листа Google и отправить приглашения календаря этим людям, чтобы уведомить людей о дежурных днях. В настоящее время мы просто перечисляем их на листе и вызываем в слабом канале. Я заметил, что люди пропускают эти медленные сообщения, потому что у нас так много каналов, чтобы оставаться на связи в течение дня. Сценарий отправляет событие календаря, но не назначает адрес электронной почты, чтобы кто-то получил стандартное уведомление. Кроме того, вы хотите вызвать более одного идентификатора календаря.   -  person Lucas Hammonds    schedule 12.11.2019


Ответы (1)


Что вам нужно сделать, так это изменить код создания события, чтобы использовать createEvent(title, startTime, endTime, options).

При этом вы можете добавить объект в качестве 4-го параметра следующим образом:

{
  "guests": "email1,email2,email3,groupsemail,etc",
  "sendInvites": true,
  "description": "Maybe you want to add more details? Up to you"
}

Итак, убедитесь, что вы отредактировали свой eventCal.createEvent(oncall, startTime, endTime);, чтобы иметь дополнительный аргумент.

Кроме того, вы можете создать список адресов электронной почты, которые будут автоматически добавляться, и пару «ключ-значение» для связывания имен и адресов электронной почты.

Удачи!

person ZektorH    schedule 13.11.2019
comment
Спасибо за помощь здесь. Я новичок в написании сценариев, в основном это просто реверс-инжиниринг сценариев, которые я нахожу в своих исследованиях. Итак, я понимаю, что вы говорите, но мне сложно соединить это в сценарии. Где я добавляю ваши строки кода? Между задачей 3 и 4 скрипта (строка 45) и добавлением 4-го объекта? Кроме того, как я могу установить это для запуска определенной даты только один раз? Каждый раз, когда я запускаю макрос, он повторяет все заново. Любая помощь здесь будет оценена по достоинству. - person Lucas Hammonds; 14.11.2019