我遇到了与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);
}
答案 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);
}