【发布时间】:2021-04-05 20:10:59
【问题描述】:
我在前几年使用 AppsScripts 为简单的任务使用 GoogleSheets 制作了一些函数。从单元格/范围获取日期并处理它们时,我总是遇到问题,但不知何故总是找到一种解决方法,所以我不必处理它。好吧,这次我找不到解决方法,所以我将尝试用以下代码解释我的问题:
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 date')在电子表格中的值为“9.6.21”。该单元格被格式化为日期,双击时会打开一个日历。当我设置新的单元格值(使用'outrng.setValue(date);')时,结果是好的,与原始单元格中的日期相同。
但是我不需要简单地传输值,我想在一些循环中实现它们,我不知道如何简单地获取与脚本中相同格式或至少相同日期的日期细胞。正如您从记录器中看到的那样,那里的值是不同的。一个简单的 d/m/yy 格式就足够了。
我的电子表格设置设置为我的当地时间(斯洛文尼亚,GMT+1)。
我猜我在这里遗漏了一些基础知识。我花了很多时间试图理解它,所以非常感谢任何帮助!
【问题讨论】:
-
阅读this小写mm是分钟的代码
-
如果你用这个
var date = sht.getRange(2,1).getValue();替换这个var date = sht.getRange(2,1).getValues();,那么你可以单独使用日期 -
如果您将 new Date() 包裹在数据值周围,通常不太可能产生不一致的结果,因为 Date() constructor 能够从各种不同的格式(包括字符串)呈现正确的 Date()。
-
谢谢大家,帮了大忙!
标签: date google-apps-script google-sheets simpledateformat