Даты Google листов, сохраняемые как строки в toString (), не распознаются как даты при обратной записи в ячейку? - PullRequest
1 голос
/ 17 октября 2019

У меня есть лист, который добавляет несколько тысяч значений в день. Чтобы он был маленьким и гибким, он регулярно хранит строки данных в виде значений, разделенных запятыми, на отдельном листе. Я перебираю каждую строку с помощью toString () во всех ячейках.

При извлечении и повторной печати необходимых данных на новом листе листы не распознают строки как даты. например, пт 29 марта 2019 13:45:06 GMT-0700 (PDT)

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

function compressData() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var arr = sheet.getRange(1,1,2,2).getValues();
  var arrNew = []; 
  var arrRow =[];
  var arrExpanded;

  for (var i in arr) {
    for (var x in arr[i]) {
      arrRow.push(arr[x][i]);
    }
    arrNew.push([arrRow[i].toString()]);
  } 
  // stores each row of the original array as a 
  // comma separated string in a new array

  sheet.getRange(1, 3, arrNew.length, arrNew[0].length).setValues(arrNew); 
  // writes the new array to a new range
}

function expandData(){
  // prints the arrays onto a new range and the new date 
  // cell isn't recognized as a date

  var arrExpanded = [];
  var sheet = SpreadsheetApp.getActiveSheet();
  var arrCompressed = sheet.getRange(1,3,2,1).getValues();

  for (var i in arrCompressed) {
    var arrTemp = arrCompressed.toString().split(',');
    arrExpanded.push(arrTemp);
  }
  // rebuilds the 2d array

 sheet.getRange(1, 4, arrExpanded.length, arrExpanded[0].length).setValues(arrExpanded); 
}

1 Ответ

1 голос
/ 18 октября 2019

Вы извлекаете значения даты из строки и задаетесь вопросом, почему Google Sheets не распознает стандартные строки даты как даты.

Причина в том, что дата, которую вы видите на экране, на самом деле является числом миллисекунды эпохи Unix . Он просто отформатирован для отображения так, что он «выглядит» как дата, состоящая из текста.

Чтобы преобразовать строку даты в значение, которое Google Sheets распознает как дату, вам нужнопреобразовать это. Следующий код предоставляет простой пример:

На приведенном ниже снимке экрана значение в ячейке B1 является строкой;значение ячейка C1 является значением даты. Обратите внимание на фактическое значение данных (число), отображаемое в ячейке C5 (эта ячейка отформатирована как «Число»);


function so5842277201() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheetname = "Sheet1";
  var sheet = ss.getSheetByName(sheetname);

  var datestring = sheet.getRange("A1").getValue();
  Logger.log(datestring);

  var date01 = new Date(datestring);
  Logger.log(date01);
  var date02 = Utilities.formatDate(date01,"GMT-7", "EEE MMM d yyyy HH:mm:ss");
  var newdaterange = sheet.getRange("C1");
  newdaterange.setValue(date02);
}

Снимок экрана

enter image description here

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