Date 理解Google脚本中的日期格式有问题
在前几年,我曾几次使用AppsScripts为简单任务使用GoogleSheets创建了一些函数。在从单元格/区域提取日期并处理它们时,我总是遇到问题,但不知何故,我总能找到一个解决办法,因此我不必处理它。嗯,这次我找不到解决方法,因此我将尝试用以下代码解释我的问题:Date 理解Google脚本中的日期格式有问题,date,google-apps-script,google-sheets,simpledateformat,Date,Google Apps Script,Google Sheets,Simpledateformat,在前几年,我曾几次使用AppsScripts为简单任务使用GoogleSheets创建了一些函数。在从单元格/区域提取日期并处理它们时,我总是遇到问题,但不知何故,我总能找到一个解决办法,因此我不必处理它。嗯,这次我找不到解决方法,因此我将尝试用以下代码解释我的问题: function getDates(){ var s = SpreadsheetApp.getActiveSpreadsheet(); var sht = s.getSheetByName('Dates'); var dat
function getDates(){
var s = SpreadsheetApp.getActiveSpreadsheet();
var sht = s.getSheetByName('Dates');
var date = sht.getRange(2,1).getValues();
Logger.log(date[0][0]); //output is Tue Jun 08 18:00:00 GMT-04:00 2021
var datumFilter= Utilities.formatDate(date[0][0], "GMT+1", "dd/mm/yy");
Logger.log(datumFilter); //output is 08/00/21
var outrng = sht.getRange(25,1);
outrng.setValue(date);
}
第一个目标单元格(“var日期”)在电子表格中的值为“9.6.21”。单元格的格式为日期,双击会打开日历。当我设置新单元格的值时(使用'outrng.setValue(date);'),结果是OK的,与原始单元格中的日期相同
但我不需要简单地传输值,我想在一些循环中实现它们,我不知道如何简单地以相同的格式获取脚本中的日期,或者至少获取与单元格中相同的日期。从记录器中可以看到,其中的值不同。简单的d/m/yy格式就足够了
我的电子表格设置设置为我的本地时间(斯洛文尼亚,GMT+1)
我猜我缺少一些基本的东西。我花了很多时间试图理解它,所以非常感谢您的帮助 库珀已经在评论中回答了你的所有问题。我想添加并向您展示一个关于它想要什么的示例,并添加一些修改 代码: 样本数据: 日志: 输出: 注:
- 由于工作表的格式设置,工作表上的输出不等于日志
var date=sht.getRange(2,1).getValues()代码>与此var date=sht.getRange(2,1.getValue()代码>然后您可以单独使用日期如果您将新的日期()包装在数据值周围,则通常不太可能产生不一致的结果,因为能够从各种不同格式(包括字符串)呈现正确的日期()。感谢各位,这非常有帮助!非常感谢你!
function getDates() {
var s = SpreadsheetApp.getActiveSpreadsheet();
var sht = s.getSheetByName('Dates');
// get last row of the sheet
var lastRow = sht.getLastRow();
// get your sheet's timezone
var timezone = SpreadsheetApp.getActive().getSpreadsheetTimeZone();
var output = [];
// getValues is mostly used for multiple cells returning a 2D array
// use getValue for single cells to return its actual value
// but since function name is getDates, I assume column A is all dates
// so we fetch the whole column (A2:A[lastRow]) except the header
var dates = sht.getRange("A2:A" + lastRow).getValues();
// for each date on that column, we format the date to d/M/yy
// m/mm = minute
// M/MM = month
dates.forEach(function ([date]){
Logger.log(date);
var datumFilter= Utilities.formatDate(new Date(date), timezone, "d/M/yy");
Logger.log(datumFilter);
// collect all dates in an array
output.push([datumFilter]);
});
// assign all the dates in the array onto range B2:B
sht.getRange(2, 2, output.length, 1).setValues(output);
}