Datetime 从google应用程序脚本放入电子表格时,日期格式更改为mm/dd/yyyy
以下是我的简单代码:Datetime 从google应用程序脚本放入电子表格时,日期格式更改为mm/dd/yyyy,datetime,google-apps-script,google-sheets,Datetime,Google Apps Script,Google Sheets,以下是我的简单代码: function doPost(request) { var deviceId="JHjdkfjak123214"; var emailId="sample@sample.com"; var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]; var rowvals=[]; var formattedDate = Utilities.formatDate(new Date(), "G
function doPost(request) {
var deviceId="JHjdkfjak123214";
var emailId="sample@sample.com";
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
var rowvals=[];
var formattedDate = Utilities.formatDate(new Date(), "GMT", "dd-MMM-yyyy");
Logger.log(formattedDate);
rowvals.push(deviceId);
rowvals.push(emailId);
rowvals.push(formattedDate);
sheet.appendRow(rowvals);
}
运行此代码时,Logger.log会显示如下日期:
29-Jul-2014
但在电子表格中输入的是2014年7月29日。我已使用abc按钮更改了单元格的格式,以便日期列的所有单元格的格式都为dd MMM yyy
现在,手动输入时,日期的格式为dd MMM yyyy。但当通过脚本输入时,它们再次更改为MM/dd/yyyy。
这个问题的解决方案是什么?您不需要使用将日期转换为字符串的
实用程序.formatDate()
格式化日期
电子表格试图变得聪明,并再次将这些字符串转换为日期,但有时不够聪明
将日期对象保留为日期,您应该获得一致的结果,这些结果对于键盘输入和脚本输出也同样有效
编辑:它确实显示了一个完整的日期值,通过在appendRow之后添加此行来更改代码
...
sheet.getRange(sheet.getLastRow(),3).setNumberFormat('dd MMM yyyy')
}
完整代码如下:
function doPost(request) {
var deviceId="JHjdkfjak123214";
var emailId="sample@sample.com";
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
var rowvals=[];
var formattedDate = new Date();
Logger.log(formattedDate);
rowvals.push(deviceId);
rowvals.push(emailId);
rowvals.push(formattedDate);
sheet.appendRow(rowvals);
sheet.getRange(sheet.getLastRow(),3).setNumberFormat('dd MMM yyyy');// add separators if you want or change the format here
}
你能把密码写出来吗。我不明白你想说什么。如果没有Utilities.formatDate()或其他类似的格式化函数,如何以所需格式输出日期?我只是试着用new Date()代替Utilities.formatDate(),但我得到了:7/29/2014 18:47:10