我是Google Apps脚本的新手,所以请耐心等待。
我正在Google表格上从银行收取每日利率,我使用以下代码为A5:F5中包含的费率添加新行,其中A列包含日期。
function recordHistory() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Interest Rates");
var source = sheet.getRange("A5:F5");
var values = source.getValues();
values[0][0] = Utilities.formatDate(new Date(), "GMT+10:00", "yyyy-MM-dd");
sheet.appendRow(values[0]);
};
我的问题是这个 - 尽管我已将日期格式指定为“yyyy-MM-dd”,但我的新行中A列中的日期是以“M / dd / yyyy”格式创建的。
我尝试使用Google表格中的下拉格式菜单预先格式化整个列A“yyyy-MM-dd”,但如果我运行上面的代码,我的新行仍然是“M / dd / yyyy”
就好像我的代码完全忽略了Utilities.formatDate。仅供参考我从here获得了上述代码。
答案 0 :(得分:10)
Utilities.formatDate()
实用程序格式化javascript字符串。但是,当写入电子表格时,Google表格会解释新的数据行,以确定数据类型和适当的格式,就像您通过用户界面输入一样。
由于您有一个可识别的日期字符串,Google表格决定它是一个日期,将其存储,并应用默认日期格式。
您可以通过两种方式让电子表格中的日期符合您的格式需求。
强制将其解释为String,即使它看起来像日期。
cell.setValue(Utilities.formatDate(new Date(), "GMT+10:00", "''yyyy-MM-dd"));
// ^^ force string literal
设置单元格的日期格式。这会将单元格的值保留为日期,这对计算很有用。
日期格式遵循SimpleDateFormat规范。
// Cell A1 contains a date
var cell = SpreadsheetApp.getActiveSheet().getRange("A1");
cell.setNumberFormat('yyyy-mm-dd');
答案 1 :(得分:1)
解决方案:
values[0][0] = Utilities.formatDate(new Date(),
"GMT+10:00", "yyyy-MM-dd").setNumberFormat('yyyy-mm-dd');