如何获取实际日期格式的Value?

时间:2019-02-19 21:22:15

标签: google-apps-script google-sheets google-sheets-api

我遇到了与getValue及其在Google表格中返回的格式有关的问题。单元格中的值为2/19/2019,格式为M / dd / yyyy,但会回馈 = Tue Feb 19 2019 00:00:00 GMT-0600(CST)(图片附件)。我很好奇我如何获取要填充的单元格,使其具有相同的格式并看起来与2019年2月19日相同。这是我目前正在处理的代码:

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);
}

Data sample

2 个答案:

答案 0 :(得分:0)

您似乎正在尝试将公式设置为日期,而不是单元格的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() 不等于设置格式

答案 1 :(得分:0)

您可以执行以下操作:

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);
}