Расчет разницы дат в редакторе скриптов Google Sheet - PullRequest
2 голосов
/ 06 марта 2019

Я пытаюсь вычислить сегодня () - прошедшую дату в редакторе сценариев

У меня есть все эти даты уже в необработанных данных

Они имеют следующий формат ..

10/31/2018 31.10.2008 г. 11.11.2008 г. 11.11.2008 г. 18.11.2008 г.

Я пробовал эти коды для расчета

function getDate(){
  var sheet = SpreadsheetApp.getActiveSheet();
  var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Lists')
  var data = sh.getRange('A:A').getValues(); // read all data in the sheet
  var sec=1000;
  var min=60*sec;
  var hour=60*min;
  var day=24*hour;
  var hd=new Date(data).valueOf();
  var td=new Date().valueOf();
  var diff=td-hd;
  var days=Math.floor(diff/day);
 // range.offset(rowOffset, columnOffset, numRows, numColumns)


  Logger.log('Day_Difference:',days);
  sh.getRange(1,1,data.length(),2).setValues(days); // write back to the sheet

}

но я получаю сообщение об ошибке:

TypeError: Cannot call property length in object Dates,Wed Oct 31 2018 00:00:00 GMT-0400 (EDT),Wed Oct 31 2018 

Должен ли я использовать разные форматы для этих расчетов ??

1 Ответ

1 голос
/ 06 марта 2019

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

Обычно при выполнении большой работы с датами люди используют библиотеку moment, которую можно найти здесь: https://github.com/moment/moment. Однако, если это простой сценарий и большая часть кода не должна быть написана вокруг дат просто сделал бы простой скрипт.

const dates = [
  '10/31/2018', 
  '10/31/2018', 
  '11/8/2018', 
  '11/11/2018', 
  '11/18/2018', 
  '11/18/2018'
];

function dateDifference(a, b) {
  const aEpoch = +new Date(a);
  const bEpoch = +new Date(b);
  
  const maxEpoch = Math.max(aEpoch, bEpoch);
  const minEpoch = Math.min(aEpoch, bEpoch);
  
  return maxEpoch - minEpoch;
}

console.log(dateDifference(dates[0], dates[1])); // Expect 0
console.log(dateDifference(dates[1], dates[2])); // Expect 694800000 milliseconds
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...