Интеграция Google Sheet в календарь - PullRequest
0 голосов
/ 19 марта 2020

Может кто-нибудь помочь с моим сценарием?

Пытался написать сценарий ГАЗ для отпуска сотрудников. 1/2 успеха с этим.

  1. Он всегда импортируется в календарь по умолчанию. Даже если я напишу, это ID.

  2. Отпуск добавлен в календарь, но всегда короче на 1 день.

Ссылка на мой Google Лист .

function createCalendarEvent3() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var calendar = CalendarApp.getCalendarsByName("vacations");


  var startRow = 2;  // First row of data to process - 2 exempts my header row
  var numRows = sheet.getLastRow();   // Number of rows to process
  var numColumns = sheet.getLastColumn();

  var dataRange = sheet.getRange(startRow, 1, numRows-1, numColumns);
  var data = dataRange.getValues();

  var complete = "Done";

  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var name = row[1]; //Item Name
    var date = new Date(row[3]);  //start date
    var rDate = new Date(row[4]); //end date
    var date2 = new Date(row[5]);  //start date1
    var rDate2 = new Date(row[6]); //end date2
    var date3 = new Date(row[7]);  //start date3
    var rDate3 = new Date(row[8]); //end date3
    var date4 = new Date(row[9]);  //start date4
    var rDate4 = new Date(row[10]); //end date4

      var currentCell = sheet.getRange(startRow + i, numColumns);

    CalendarApp.getDefaultCalendar().createEvent(name,date,rDate);
    CalendarApp.getDefaultCalendar().createEvent(name,date2,rDate2);
    CalendarApp.getDefaultCalendar().createEvent(name,date3,rDate3);
    CalendarApp.getDefaultCalendar().createEvent(name,date4,rDate4);

      currentCell.setValue(complete);
    }
  }

1 Ответ

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

(1) Скорее всего, отпуск добавляется на один день раньше, потому что timeZone в вашем календаре не совпадает с указанным в датах, которые вы использовали для создания событий. В своем Календаре go до Settings > Time zone и убедитесь, что указанное timeZone совпадает с указанным в ваших датах.

(2) CalendarApp.getDefaultCalendar () возвращает календарь по умолчанию так что это нормально, что события добавляются в этот календарь. Если вы хотите добавить события в другой календарь, вы должны сделать это вместо этого:

CalendarApp.getCalendarById("your-calendar-id")

(3) В следующей строке нет необходимости. Вы не используете его где-либо еще (в любом случае, это не возвращает календарь, но массив календарей ):

var calendar = CalendarApp.getCalendarsByName("vacations");

Ссылка:

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