理解 googleScripts 中的日期格式的问题

Problem with understanding date formats in googleScripts

前几年,我使用 AppsScripts 使用 GoogleSheets 做了一些简单的任务。从 cells/ranges 获取日期并处理它们时,我总是遇到问题,但不知何故总能找到解决方法,这样我就不必处理它了。好吧,这次我找不到解决方法,所以我将尝试用以下代码来解释我的问题:

function getDates(){
 var s = SpreadsheetApp.getActiveSpreadsheet();
 var sht = s.getSheetByName('Dates');
 var date = sht.getRange(2,1).getValues();  
 Logger.log(date[0][0]); //output is Tue Jun 08 18:00:00 GMT-04:00 2021

 var datumFilter= Utilities.formatDate(date[0][0], "GMT+1", "dd/mm/yy");
 Logger.log(datumFilter); //output is 08/00/21

 var outrng = sht.getRange(25,1);  
 outrng.setValue(date);
}

第一个目标单元格 ('var date') 在电子表格中的值为“9.6.21”。该单元格被格式化为日期,双击它会打开一个日历。当我设置新的单元格值(使用 'outrng.setValue(date);')时,结果正常,日期与原始单元格中的日期相同。

但我不需要简单地传输值,我想在一些循环中实现它们,但我不知道如何简单地以相同的格式或至少在脚本中获取与它相同的日期在牢房里。正如您从记录器中看到的那样,那里的值是不同的。一个简单的 d/m/yy 格式就足够了。

我的电子表格设置为当地时间(斯洛文尼亚,GMT+1)。

我猜我在这里缺少一些基础知识。我花了很多时间试图理解它,所以非常感谢任何帮助!

Cooper 已经在评论中回答了你所有的问题。我想添加并向您展示它想要什么并添加一些修改的示例。

代码:

function getDates() {
  var s = SpreadsheetApp.getActiveSpreadsheet();
  var sht = s.getSheetByName('Dates');
  // get last row of the sheet
  var lastRow = sht.getLastRow();
  // get your sheet's timezone
  var timezone = SpreadsheetApp.getActive().getSpreadsheetTimeZone();
  var output = [];

  // getValues is mostly used for multiple cells returning a 2D array
  // use getValue for single cells to return its actual value
  // but since function name is getDates, I assume column A is all dates
  // so we fetch the whole column (A2:A[lastRow]) except the header
  var dates = sht.getRange("A2:A" + lastRow).getValues();

  // for each date on that column, we format the date to d/M/yy
  // m/mm = minute
  // M/MM = month
  dates.forEach(function ([date]){
    Logger.log(date);
    var datumFilter= Utilities.formatDate(new Date(date), timezone, "d/M/yy");
    Logger.log(datumFilter);
    // collect all dates in an array
    output.push([datumFilter]);
  });
  // assign all the dates in the array onto range B2:B
  sht.getRange(2, 2, output.length, 1).setValues(output);  
}

示例数据:

日志:

输出:

注:

  • 由于我的 sheet.
  • 的格式,sheets 上的输出不等于日志