Несколько идентификаторов календаря в скрипте Google - PullRequest
0 голосов
/ 28 июня 2018

Новичок в программировании, и я ударился головой о стену, пытаясь добавить несколько идентификаторов календаря в сценарий ниже. Мне нужно, чтобы он перебрал строки и, если событие еще не было добавлено в календарь, добавьте его в мой и в другие календари по мере обновления листа.

function addToCal() {
  var ss = SpreadsheetApp.getActiveSpreadsheet(),
      sheet = ss.getSheetByName("ProductionSchedule"),
      range = sheet.getActiveRange(),
      row = range.getRow(),
      data = sheet.getRange(row, 1, 1, 26).getValues(),
      date = data[0][6];
  if (date =='') return;
  var today = new Date(),
      startDate = new Date(today.setMonth(today.getMonth()-1)),
      endDate = new Date(today.setMonth(today.getMonth()+6)),
      calId = 'calendarID',
      cal = CalendarApp.getCalendarById(calId),
      events = cal.getEvents(startDate, endDate),
      titles = [];
  for (var i = 0, len = events.length; i < len; i++)
    titles.push(events[i].getTitle());
  var item = ('Produção de' + ' ' + data[0][3]),
      qtd = ('Qtd (und): ' + data[0][5]),
      local = ('Local de Produção: ' + data[0][4]);
  var index = titles.indexOf(item),
      ok = 1;
  if (index > -1)
  {
    var eventDate = events[index].getAllDayStartDate();
    if (eventDate.getTime() == date.getTime()) var ok = 0;
    else events[index].deleteEvent();
  }
  if (ok) 
    cal.createAllDayEvent(item, date, {description: qtd, location: local})
    .removeAllReminders();
}

В настоящее время он устанавливает события в моем календаре, содержащие Описание элемента в качестве заголовка события, Название продукта, Кол-во и Место производства в поле описания. Мне нужно, чтобы эта информация была добавлена ​​в другие календари.

Кроме того, это не может пометить меня как занятого, и мероприятие не обязательно должно быть мероприятием на весь день.

Любая помощь приветствуется. Cheers,

1 Ответ

0 голосов
/ 28 июня 2018

Чтобы повторить взаимодействие календаря для нескольких календарей, необходимо создать массив идентификаторов календаря и просмотреть их.

Один из подходов будет:

var CALENDER_IDS = [
  "calendarID1",
  "calendarID2",
  "calendarID3",
]

func addToCal() {

  ... spreadsheet data extraction and date calculations ...

  for (var i = 0, clen = CALENDER_IDS.length; i < clen; i++) {
    var cal = CalendarApp.getCalendarById(CALENDER_IDS[i]);

    ... calendar interactions ...
  }
}

Если вы используете приведенный выше код, обязательно обновите переменную счетчика в цикле заголовка (т. Е. Они оба не могут быть i). Обычной практикой является использование внутренних циклов j, k и т. Д.

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