Установка значения ячейки с двумя датами - PullRequest
0 голосов
/ 28 июня 2019

Я создаю скрипт Google Spreadsheet со скриптами Google App, который взаимодействует с Календарем Google. Я занимаюсь поиском определенного события Календаря по ключевому слову, извлекая начальную и конечную даты этого события, а затем цель состоит в том, чтобы отобразить эти две даты в одну ячейку электронной таблицы (в основном для удобства чтения). ). Другими словами, ячейка должна выглядеть так: «07/14/19 - 20.07.19». Мой код ниже:

function listEvents() {
  var id = "THE ID FOR MY CALENDAR IS HERE";   
  var cal = CalendarApp.getCalendarById(id);
  var startPeriod = new Date();
  startPeriod.setHours(0, 0, 0, 0);
  var endPeriod = new Date(startPeriod);
  endPeriod.setDate(endPeriod.getDate() + 1000);

  var sheet = SpreadsheetApp.getActiveSheet();
  var gig = sheet.getRange(1,1);
  var gigName = gig.getValue(); // get the gig name so you can search for it

  var events = cal.getEvents(startPeriod, endPeriod, {search:gigName});

// find the start date of each event in the calendar
  var starttime = [];
  for (var i = 0; i < events.length; i++) { 
    starttime.push([events[i].getStartTime()]);    
  }

  // find the end date of each event in the calendar
  var endtime = [];
  for (var i = 0; i < events.length; i++) { 
    endtime.push([events[i].getEndTime()]); 

  var cell = sheet.getRange("E5");
  cell.setValue(starttime+endtime);

Это своего рода работа. Я могу установить starttime в одной ячейке и endtime в другой, и они выглядят все красиво и красиво ('07 / 14/19 ',' 07/14/19 '), но когда я делаю cell.setValue(starttime+endtime);, форматирование этой ячейки меняется на этот беспорядочный материал Sun Jul 14 2019 00:00:00 GMT-0500 (CDT)Sat Jul 20 2019 00:00:00 GMT-0500 (CDT) Просто повторюсь, я бы хотел, чтобы это выглядело как '07/14 / 19-07 / 20/19.'

Я не могу сказать, это проблема с кодом или проблема с форматированием. Если кто-нибудь может предложить какую-то помощь, это будет оценено!

Ответы [ 2 ]

1 голос
/ 29 июня 2019

Требование:

Отформатированные даты для объединения внутри .setValue().


Решение:

Отформатируйте даты, прежде чем объединять их в .setValue(),Используйте следующие 3 строки кода, чтобы заменить те, что в настоящее время в вашем скрипте.

//format the start time
starttime.push([Utilities.formatDate(events[i].getStartTime(), "GMT", "dd/MM/yy")]);

//format the end time
endtime.push([Utilities.formatDate(events[i].getEndTime(), "GMT", "dd/MM/yy")]);

Тогда ваш .setValue() должен выглядеть примерно так:

cell.setValue(starttime + ' - ' + endtime);

Пример:

function listEvents() {
  var id = "THE ID FOR MY CALENDAR IS HERE";   
  var cal = CalendarApp.getCalendarById(id);
  var startPeriod = new Date();
  startPeriod.setHours(0, 0, 0, 0);
  var endPeriod = new Date(startPeriod);
  endPeriod.setDate(endPeriod.getDate() + 1000);

  var sheet = SpreadsheetApp.getActiveSheet();
  var gig = sheet.getRange(1,1);
  var gigName = gig.getValue(); // get the gig name so you can search for it

  var events = cal.getEvents(startPeriod, endPeriod, {search:gigName});

  // find the start date of each event in the calendar
  var starttime = [];
  for (var i = 0; i < events.length; i++) { 
    starttime.push([Utilities.formatDate(events[i].getStartTime(), "GMT", "dd/MM/yy")]); 
  }

  // find the end date of each event in the calendar
  var endtime = [];
  for (var i = 0; i < events.length; i++) { 
    endtime.push([Utilities.formatDate(events[i].getEndTime(), "GMT", "dd/MM/yy")]);
  }

  var cell = sheet.getRange("E5");
  cell.setValue(starttime + ' - ' + endtime);

Ссылка:

  1. Utilities.formatDate
0 голосов
/ 29 июня 2019

Вам нужно взглянуть на служебную службу ... Там есть метод "Формат даты", который позволяет вам форматировать дату так, как вы хотите, чтобы она выглядела.

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