Что я сделал не так, я получаю сообщение о том, что строка 12 не годится (Листы в календарь) - PullRequest
1 голос
/ 31 октября 2019

Я пытаюсь добавить события из листов в календарь, я продолжаю выдавать ошибку с последней строкой кода

function addevents() {
  var ss = SpreadsheetApp.getActiveSheet();
  var lr = ss.getLastRow();
  var cal = CalendarApp.getCalendarById("maytavbus.com_jm741jospf0kv3f2se2kpo88i0@group.calendar.google.com")
  var data = ss.getRange("A1:C" + lr).getValues();
  for(var i = 0; i < data.length; i++) {
    cal.createAllDayEvent(data[i][0], data[i][1], data[i][2])
  }
}

Я пытался сделать это, он все еще говорит мне, что начало должно бытьдо конца, в листах это так

function addevents() {
  var ss = SpreadsheetApp.getActiveSheet();
  var lr = ss.getLastRow();
  var cal = CalendarApp.getCalendarById("maytavbus.com_jm741jospf0kv3f2se2kpo88i0@group.calendar.google.com");

  var data = ss.getRange("A1:C" + lr).getValues();

  for(var i=0; i < data.length; i++) {
    var title = data[i][0];
    var startDate = new Date(data[i][1]); 
    var endDate = new Date(data[i][2]);
    cal.createAllDayEvent(title, startDate, endDate);
  }
}

Вот данные в листе:

title startDate endDate 
FAS8-school closed 11/1/2019 0:00:00 11/1/2019 0:00:00 
0647-school closed 11/5/2019 0:00:00 11/5/2019 0:00:00 
SEM1-school closed 11/5/2019 0:00:00 11/5/2019 0:00:00 
SME2-school closed 11/5/2019 0:00:00 11/5/2019 0:00:00 
SMC3-school closed 11/5/2019 0:00:00 11/5/2019 0:00:00 
SY2-school closed 11/5/2019 0:00:00 11/5/2019 0:00:00 
SY5-school closed 11/5/2019 0:00:00 11/5/2019 0:00:00

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Как я вижу в ваших комментариях к ответу @Cooper, startDate и endDate одинаковы. Вот почему вы получаете сообщение об ошибке Event start date must be before event end date. (line 11, file "Code").

Если вы хотите, чтобы событие длилось всего один день, вы должны указать только одну дату, как в здесь . Вы должны использовать createAllDayEvent (title, startDate, endDate) только в том случае, если событие длится более одного дня.

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

Так что вы можете попробовать изменить это:

for(var i=0; i < data.length; i++) {
  var title = data[i][0];
  var startDate = new Date(data[i][1]); 
  var endDate = new Date(data[i][2]);
  cal.createAllDayEvent(title, startDate, endDate);
}

На это:

for(var i = 0; i < data.length; i++) {
  var title = data[i][0];
  var startDate = new Date(data[i][1]);
  var endDate = new Date(data[i][2]);
  if(startDate.getFullYear() == endDate.getFullYear() && startDate.getMonth() == endDate.getMonth() && startDate.getDate() == endDate.getDate()) {
    cal.createAllDayEvent(title, startDate);
  } else {
    cal.createAllDayEvent(title, startDate, endDate);
  }
}

Я надеюсь, что это поможет.

0 голосов
/ 31 октября 2019

Возможно, вы захотите попробовать:

cal.createAllDayEvent(data[i][0], new Date(data[i][1]), new Date(data[i][2]));

Я предполагаю, что последние две даты.

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