Google Apps 脚本日期格式问题 (Utilities.formatDate)
Google Apps Script date format issue (Utilities.formatDate)
我是 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 表格中的下拉格式菜单使用 "yyyy-MM-dd" 预格式化整个 A 列,但是如果我 运行 我的新行上方的代码仍然是在 "M/dd/yyyy".
就好像我的代码完全忽略了 Utilities.formatDate。仅供参考,我从 here.
获得了以上代码
Utilities.formatDate()
实用程序格式化 javascript 字符串。但是,当写入电子表格时,新数据行由 Google 工作表解释以确定数据类型和适当的格式,就像您通过用户界面输入它一样。
由于您有一个可识别的日期字符串,Google Sheets 确定它是一个日期,按原样存储它,并应用默认日期格式。
您有两个选项可以使电子表格中的日期满足您的格式设置需要。
强制将其解释为字符串,即使它看起来确实像日期。
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');
解决方案:
values[0][0] = Utilities.formatDate(new Date(),
"GMT+10:00", "yyyy-MM-dd").setNumberFormat('yyyy-mm-dd');
我是 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 表格中的下拉格式菜单使用 "yyyy-MM-dd" 预格式化整个 A 列,但是如果我 运行 我的新行上方的代码仍然是在 "M/dd/yyyy".
就好像我的代码完全忽略了 Utilities.formatDate。仅供参考,我从 here.
获得了以上代码Utilities.formatDate()
实用程序格式化 javascript 字符串。但是,当写入电子表格时,新数据行由 Google 工作表解释以确定数据类型和适当的格式,就像您通过用户界面输入它一样。
由于您有一个可识别的日期字符串,Google Sheets 确定它是一个日期,按原样存储它,并应用默认日期格式。
您有两个选项可以使电子表格中的日期满足您的格式设置需要。
强制将其解释为字符串,即使它看起来确实像日期。
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');
解决方案:
values[0][0] = Utilities.formatDate(new Date(),
"GMT+10:00", "yyyy-MM-dd").setNumberFormat('yyyy-mm-dd');