Дата формата, возвращенная из запроса API визуализации - PullRequest
0 голосов
/ 09 июня 2019

Я использую API визуализации Google для запроса к электронной таблице, в которой даты в одном столбце. Проблема заключается в том, что при использовании дат, возвращаемых в запросе, для заполнения другой электронной таблицы они неправильно форматируются.

До сих пор я уже попробовал следующее

  var queryResult = sheetQuery(
      "Sheet1", 
      "A1:A", 
      "select A format A 'dd/mm/yyy'"
  );
  var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadSheet.getSheetByName("Sheet1");
  var range = sheet.getRange(1, 2, 8, 1);
  range.clear();
  range.setValues(queryResult).setHorizontalAlignment("left");

, пожалуйста, обратите особое внимание на мое использование предложения формата в конце запроса (4-й параметр).

Я также пыталсявручную отформатируйте ячейки даты следующим образом:

sheet.getRange(1, 2, 8, 1).setNumberFormat("dd/mm/yyyy");

Однако даты просто не форматируются и остаются отформатированными так: Дата (2018,8,21,9,0,0) Дата (2018,8, 21,9,15,4) Дата (2018,8,21,9,30,0) Дата (2018,8,21,9,45,0) Дата (2018,8,23,10,0,19) Дата (2018,8,24,10,15,0) Дата (2018,8,24,10,30,0) Дата (2018,8,24,10,45,43)

IВот пример электронной таблицы: https://docs.google.com/spreadsheets/d/160sp6T0dEvq_s5X6gGx_mH-9dj2fBf7co80On01JqWw/edit?usp=sharing

Чтобы воспроизвести проблему, найдите скрипт mainFunction и запустите.Вот ссылка на скрипт: https://script.google.com/d/1kRavDwa0HKSuFRk6UKram1j7UzcaSow7mwfWBolSZoHwARaVF6Ifh_iF/edit?usp=sharing

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 17 июня 2019

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

for (var j = 0; j < queryResult.length; j++) {
  var previousDate = queryResult[j][2];
  var dateArray = previousDate.substring(previousDate.indexOf('(') + 1, previousDate.indexOf(')')).split(',');
  for (var k = 0; k < dateArray.length; k++) {
    dateArray[k] = parseInt(dateArray[k]);
  }
  queryResult[j][2] = new Date(dateArray[0], dateArray[1], dateArray[2], dateArray[3], dateArray[4], dateArray[5]);
}

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