【问题标题】:Automating new dates in google sheets / scripts在谷歌表格/脚本中自动化新日期
【发布时间】:2020-10-28 22:24:53
【问题描述】:

我正在尝试使用 google 脚本自动创建日历。我正在从必须每周输入事件的工作表中获取数据。在我的工作表中,它被格式化为输入谷歌日历。该脚本运行良好,但我想自动化我的日期。我将它设置为星期一的日期,并为新的一周增加 7 天。它在 10 月 26 日到 11 月 2 日工作,但是当它进入下一周时,它会恢复到 10 月 9 日而不是 11 月 9 日,其余日期都是 10 月而不是 11 月。我根本想不通这个问题。我不是最擅长编码,但已经找到并操纵了大多数在线找到的代码

https://docs.google.com/spreadsheets/d/14JQ-qqZ4eIl2xKuBjzSHSyC-4fV_yVxih9qUIwLGfNA/edit?usp=sharing

function changeDate() {
  
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Sheet1");
 
  var startDate = new Date(sheet.getRange("A2").getValues());
  var secondDate = new Date();
   
  secondDate.setDate(startDate.getDate()+7);
  
  Logger.log(startDate);
  sheet.getRange("A2").setValue(secondDate);
  
}

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    getDate() 只返回当月的某一天,而不是完整的日期

    您最好使用getTime() 将您的日期转换为毫秒,并在毫秒中添加相当于 7 天的时间:

      var startDate = new Date(sheet.getRange("A2").getValues());
      var secondDate = new Date(startDate.getTime()+7*24*3600*1000);
      sheet.getRange("A2").setValue(secondDate);
    

    【讨论】:

    • 感谢您的帮助。这使它从 10/26 到 12/3...
    • 我刚刚再次验证,它对我来说可以正常工作。
    • 你可以这样做secondDate.setDate(startDate.getDate()+7);像这样var secondDate=new Date(starttDate.getFullYear(), startDate.getMonth(),startDate.getDate()+7)
    • 其实我相信这是一个夏令时问题。它仍然很奇怪,因为它从 10/26 到 11/1 23:00 时间戳。如果我手动将其更改为 11/2,一切正常。有什么想法可以防止或解决这个问题?
    • @Cooper 就是这样!谢谢你的帮助!为什么这行得通而原始代码却行不通?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多