Как я могу однажды добавить дату начала события в Google Apps Script - PullRequest
2 голосов
/ 19 марта 2020

У меня есть скрипт приложений Google, который получает время начала и окончания календарного события не на весь день. Мероприятие проходит с 8:00 до 9:00 16-го числа, и я смотрю сценарий, который по сути дублирует его на 17-е, затем на 18-е и так далее. Я знаю, что вы, вероятно, думаете, что я должен просто повторять событие каждый день, но я использую программу, которая игнорирует повторяющиеся события.

Вот что у меня есть:

function myFunction() {
var cal = CalendarApp.getCalendarById('1234@calendar.google.com')
var spanish = cal.getEventById('12345')

var title = spanish.getTitle()
var desc = spanish.getDescription()
var start = spanish.getStartTime()
var end = spanish.getEndTime()
cal.createEvent(title, START TIME + 1 DAY, END TIME + 1 DAY)
}

Любое совет ценится

Ответы [ 2 ]

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

Самый надежный способ добавить день - использовать миллисекунды. Добавление 1 к дню будет работать большую часть времени, но если событие было в последний день года, и вы хотите переместить событие на один день, то год и месяц будут разными. Таким образом, получение года и месяца и его повторное использование в этом случае не сработает.

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

function testMoveDateByOneDay() {
  var endDate,foundEvent, startDate;

  var cal = CalendarApp.getDefaultCalendar();

  startDate = new Date();
  endDate = new Date();
  endDate = endDate.setDate(endDate.getDate() + 1);

  var event = cal.createAllDayEvent('Test Event', startDate, endDate)

  var eventID = event.getId();

  var foundEvent = cal.getEventById(eventID);

  var title = foundEvent.getTitle()
  var desc = foundEvent.getDescription()

  var start = foundEvent.getStartTime();
  var end = foundEvent.getEndTime();

  //Logger.log(typeof start)

  var startInMS = start.getTime() + 86400000;//Add one day in milliseconds
  var endInMS = end.getTime() + 86400000;

  start = new Date(startInMS);
  end = new Date(endInMS);

  //Logger.log(typeof start)

  event.setTime(start, end);//Change the day of  of this event
}
0 голосов
/ 19 марта 2020

try:

var newStart=new Date(start.getFullYear(),start.getMonth(),start.getDate()+1);

Вы можете добавить больше терминов, если хотите время.

JavaScript Дата ()

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