如何以实际日期格式获取值?

How can I getValue in actual date format?

我 运行 遇到了 getValue 及其在 Google 表格中返回的格式的问题。单元格中的值是 2/19/2019,格式为 M/dd/yyyy,但它正在返回 =2019 年 2 月 19 日星期二 00:00:00 GMT-0600 (CST)(附上问题的图片)。我很好奇如何让我尝试填充的单元格具有相同的格式并且看起来与 2/19/2019 相同。这是我目前正在处理的代码:

function fillDown() {
  var ss = SpreadsheetApp.openById('spreadsheetId');
  var sheet = ss.getSheetByName("spreadsheetName");
  var originRange = sheet.getRange(sheet.getLastRow(), 1);
  var targetRange = sheet.getRange(sheet.getLastRow()+1, 1)
  var formula = originRange.getValue();
  targetRange.activate();
  sheet.getCurrentCell().setFormula(formula);
}

您似乎在尝试将 公式 设置为日期而不是单元格的 getValue() 返回单元格的实际值,不是格式化版本。公式与这两者不同。如果要将日期设置为特定值并以特定方式显示,只需使用 setValue(date) 格式化 单元格。

var formula = originRange.getValue();
targetRange.activate();
// sheet.getCurrentCell().setFormula(formula); this results in the cell containing '=<date>'
sheet.getCurrentCell().setValue(date);

--> 确保格式化整列会适当显示。

综上所述,setFormula()不等于设置格式

你可以这样做:

function fillDown() {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getActiveSheet();
  var originRange = sheet.getRange(sheet.getLastRow(), 1);
  var targetRange = sheet.getRange(sheet.getLastRow()+1, 1)
  var value = originRange.getValue();
  var format = originRange.getNumberFormat()
  targetRange.activate();
  sheet.getCurrentCell().setValue(value);
  sheet.getCurrentCell().setNumberFormat(format);
}