Apps Script CalendarApp createAllDayEvent создает событие, но в календаре отображается только «Кому:» - PullRequest
2 голосов
/ 19 марта 2020

Я хочу добавить события в свой календарь Google на основе данных в моей электронной таблице. Имена событий и их даты будут взяты из электронной таблицы.

Вот таблица, которую я хочу обработать:
image of table

function myFunction() {


  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var calendarID = spreadsheet.getRange("D1").getValue();
  var eventCal = CalendarApp.getCalendarById(calendarID);

  var dates = spreadsheet.getRange("A1:B11").getValues();
  var date = dates[0][0];
  var event = CalendarApp.getDefaultCalendar().createAllDayEvent(date,new Date('3-19-2020'));

  for(x = 0; x < dates.length; x++) {

  }
}

Но даже когда я пытаюсь выполнить все это без AL oop Я получаю этот результат: enter image description here

Ответы [ 3 ]

1 голос
/ 19 марта 2020

Первый параметр для метода createAllDayEvent(title, startDate, endDate) класса CalendarApp - это title, который должен быть строковым типом данных. JavaScript значения могут иметь разные типы данных. Они могут быть string, или object, или Boolean, или number, или date. Дата оценивается как объект при проверке типа данных с помощью typeof. Если значение для date является датой, тогда это неправильный тип данных для параметра title. Вы можете определить тип данных с помощью typeof putSomethingHere Итак, я бы проверил тип данных date и преобразовал бы его в строку при необходимости.

if (typeof date === 'object') {
  timeZone = Session.getScriptTimeZone();//Enter your timezone here
  date = Utilities.formatDate(date, timeZone, "yyyy-MM-dd");//Formats the date to a string
}
0 голосов
/ 21 марта 2020

Я отбросил эту идею и начал такой же «проект» с более привычного мне Java.

0 голосов
/ 19 марта 2020

Согласно data table, который вы опубликовали, кажется, что A1 и B1 являются заголовками для вашей электронной таблицы, и когда вы пытаетесь создать событие, вы создаете var date с параметром dates[0][0], который по существу представлен заголовками.

Вместо этого вы можете обновить диапазон, чтобы не включать заголовки, например: var dates = spreadsheet.getRange("A2:B11").getValues(); ИЛИ вызовите переменную dates следующим образом, пропустив заголовки: dates[1][0].

Ссылка

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