Datetime 在google sheets脚本的For循环中使用getTime

Datetime 在google sheets脚本的For循环中使用getTime,datetime,for-loop,google-apps-script,Datetime,For Loop,Google Apps Script,我正在尝试运行一个类似以下内容的“for”循环: 函数runMultipleDates(){ var ss=SpreadsheetApp.getActiveSpreadsheet(); //2018年9月26日为156947700000,2019年2月28日为155133720000;2018年9月21日为1537509600000 对于(var date1=1537596000000/*2018年9月21日*/;date1

我正在尝试运行一个类似以下内容的“for”循环:

函数runMultipleDates(){ var ss=SpreadsheetApp.getActiveSpreadsheet(); //2018年9月26日为156947700000,2019年2月28日为155133720000;2018年9月21日为1537509600000 对于(var date1=1537596000000/*2018年9月21日*/;date1<156947760000/*2018年9月26日*/;date1+=86400000){ //运行一切(); var date2=新日期(); date2=date2.setTime(date1); ss.getSheetByName(“时间范围”).getRange(“A3”).setValue(日期2); };
};Tanaike建议在setValue()中使用新的日期(date2),它成功了。我的最终剧本是这样的:

函数runMultipleDates(){ var ss=SpreadsheetApp.getActiveSpreadsheet();
对于(var date1=1538200800000;date1Tanaike建议在setValue()中使用新的日期(date2),它成功了

函数runMultipleDates(){ var ss=SpreadsheetApp.getActiveSpreadsheet(); 对于(var date1=1538200800000;date1
  • 您希望使用日期字符串而不是unix时间
如果我的理解是正确的,那么下面的脚本呢?请把它看作是几个可能的答案之一

示例脚本: 函数runMultipleDates(){ var ss=SpreadsheetApp.getActiveSpreadsheet(); 风险值开始=新日期(“2018-09-29”);//
  • 您希望使用日期字符串而不是unix时间
如果我的理解是正确的,那么下面的脚本呢?请把它看作是几个可能的答案之一

示例脚本: 函数runMultipleDates(){ var ss=SpreadsheetApp.getActiveSpreadsheet();
var start=new Date(“2018-09-29”);//当您想将值作为日期对象放入单元格“C3”时,请修改
ss.getSheetByName(“时间范围”).getRange(“A3”).setValue(date1);
ss.getSheetByName(“时间范围”).getRange(“A3”).setValue(新日期(date1))
。但我无法理解
只要A3单元格中的日期小于2018年9月26日,for循环就应该运行我的函数“runEverything”,然后在A3中设置一个新日期。
。在您的脚本中,
date1
的值被放入单元格“A3”。因此,在您的脚本中,
2018年9月25日
被放入单元格“A3”。我可以问一下你的目标吗?我尝试了一个新脚本,并在问题中对其进行了更新。你能再次查看我的问题,看看它是否有助于澄清我的更多意思吗?单元格A3中的值仍然是“15693920000”的数值,而不是像2018年9月23日这样的日期值。谢谢你的回答。例如,修改
setValue(date2)如何
设置值(新日期(日期2))
?但在这种情况下,
15693920000
2019年9月25日
。我能问一下检索
2018年9月23日
的逻辑吗?塔奈克,谢谢你建议设置值(新日期(日期2))。这就行了。我想要的是根据A3单元格中的日期运行我的函数。因此我需要A3单元格一次增加一天。最后的代码是:runEverything();var date2=new date();date2=date2.setTime(date1+86400000);ss.getSheetByName('时间范围').getRange(“A3”).setValue(新日期(日期2));};您还有其他建议吗?感谢您的回复。我很高兴您的问题得到解决。当您想将值作为日期对象放入单元格“C3”时,请将
ss.getSheetByName(“时间范围”).getRange(“A3”).setValue(日期1”);
修改为
ss.getSheetByName(“时间范围”).getRange(“A3”).setValue(new Date(date1));
。但我无法理解
。只要单元格A3中的日期小于2018年9月26日,for循环就应该运行我的函数“runEverything”,然后在A3中设置一个新日期。
。在脚本中,
date1
的值被放入单元格“A3”“。因此,在您的脚本中,
2018年9月25日
被放在单元格“A3”中。我可以问一下您的目标吗?我尝试了一个新脚本,并在问题中进行了更新。您能否再次查看我的问题,看看它是否有助于澄清我的更多含义?单元格A3中的值仍然是数字“156931200000”而是像2018年9月23日这样的日期值。感谢您的回复。例如,将
setValue(date2)
修改为
setValue(新日期(date2))怎么样
?但在这种情况下,
15693920000
2019年9月25日
。我能问一下检索
2018年9月23日
的逻辑吗?Tanaike,感谢您建议设置值(新日期(date2))。这就行了。我想要的是根据A3单元格中的日期运行我的函数。因此我需要A3单元格一次增加一天。最后的代码是:runEverything();var date2=new date();date2=date2.setTime(date1+86400000);ss.getSheetByName('时间范围').getRange(“A3”).setValue(new Date(date2));};您还有其他建议吗?谢谢您的回复。我很高兴您的问题得到了解决。Tanaike,再次感谢您的帮助!这样更好,因为我不必每次更改时间范围时都转换unix历元时间。我做了一次调整,将runEverything()移到“setValue”之后我的一个问题是为什么var date2=newdate(date1.getTime())而不是var date2=newdate(date1)?如果您愿意解释,我将不胜感激。另外,关于另一个相关问题,您能看一看吗?@Thien Pham感谢您的回复。我认为
var date2=new Date(date1.getTime())
var date2=new Date(date1)的两种模式
可以使用。在这种情况下,我使用它将
date1
的日期对象复制到
date2
。对于示例脚本的可读性低,我深表歉意。这是由于我的技能差。如果此答案不能解决y
function runMultipleDates() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  var start = new Date("2018-09-29"); // <--- 1538200800000
  var end = new Date("2018-10-05"); // <--- 1538719200000
  var step = 1; // 1 day (86400000)

  for (var date1 = start; date1 <= end; date1.setDate(date1.getDate() + step)) {
    runEverything();
    var date2 = new Date(date1.getTime());
    date2.setDate(date2.getDate() + 1);
    ss.getSheetByName('Time Range').getRange("A3").setValue(date2);
  };
}