【发布时间】:2020-03-16 19:48:46
【问题描述】:
我正在尝试运行如下所示的“for”循环:
function runMultipleDates() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
//9/26/2018 is 1569477600000 and 2/28/2019 is 1551337200000; 9/21/2018 is 1537509600000
for (var date1 = 1537596000000 /*9/21/2018*/; date1 < 1569477600000 /*9/26/2018*/; date1 +=86400000) {
//runEverything();
var date2 = new Date();
date2 = date2.setTime(date1);
ss.getSheetByName('Time Range').getRange("A3").setValue(date2);
};
};
我的目标是运行一个名为“runEverything()”的函数,该函数引用位于名为“时间范围”的工作表的单元格 A3 中的日期。只要单元格 A3 中的日期小于 2018 年 9 月 26 日,for 循环就应该运行我的函数“runEverything”,然后在 A3 中设置一个新日期。当我进行测试循环时,setValue(date2) 在该单元格 (A3) 中返回一个数值而不是日期。有人能指出我如何返回日期格式而不是日期的数值吗?如果有更优雅的方式来实现这一点,我会全力以赴!
感谢您的洞察力!
【问题讨论】:
-
当要将值作为日期对象放入单元格“C3”时,请将
ss.getSheetByName('Time Range').getRange("A3").setValue(date1);修改为ss.getSheetByName('Time Range').getRange("A3").setValue(new Date(date1));。但我无法理解As long as the date in cell A3 is less that 9/26/2018, the for loop should run my function 'runEverything' and then set a new date in A3.。在您的脚本中,date1的值被放入单元格“A3”中。所以在你的脚本中,结果是9/25/2018被放入单元格“A3”。我能问一下你的目标吗? -
我尝试了一个新脚本并在问题中更新了它。你能再看看我的问题,看看它是否有助于澄清我的意思?单元格 A3 中的值仍然是“1569391200000”的数值,而不是像 2018 年 9 月 23 日这样的日期值。
-
感谢您的回复。比如把
setValue(date2)修改成setValue(new Date(date2))怎么样?但在这种情况下,1569391200000是9/25/2019。能否请教一下检索9/23/2018的逻辑? -
田池,感谢您建议 setValue(new Date(date2))。那行得通。我想要的是在几天后根据位于单元格 A3 中的日期运行我的函数。所以我需要单元格 A3 一次增加一天。我的最终代码是这样的:runEverything(); var date2 = new Date(); date2 = date2.setTime(date1+86400000); ss.getSheetByName('时间范围').getRange("A3").setValue(new Date(date2)); };您还有其他建议吗?
-
感谢您的回复。很高兴您的问题得到解决。
标签: datetime for-loop google-apps-script