【问题标题】:How to sum up date values to a number (days' sum)?如何将日期值总结为一个数字(天数总和)?
【发布时间】:2019-04-09 13:17:25
【问题描述】:

在 Google 表格中,我有一个带有开始日期的活动列表,以及一个指定该活动持续时间的数字(以天为单位)。我需要使用 Google Apps 脚本将这些数字与日期相加,以获得活动的截止日期。

我已经尝试过这个问题中发布的解决方案:Adding Days to a Date - Google Script

该解决方案的问题是电子表格的脚本编辑器无法识别“日期”类,因此我无法实例化日期元素。

直接求和只需要日期和数字作为字符串。 尝试上述方法会导致我要转换的单元格中出现#NUM! 错误。

编辑:

我试过这个,V3 保存我想要求和的日期:

var fecha= new Date (ss.getSheetByName(camada).getRange("V3").getValue());
var fecha2= new Date();

fecha2.setDate(fecha.getDate() + 1);

ss.getSheetByName(camada).getRange("W3").setValue(fecha2);

它显然有效,但问题是 V3 持有 5/13/2019 并且返回的日期是 4/14/2019,所以它多一天 (13->14) 但它少一个月 (5->4) .

【问题讨论】:

  • 显示您尝试过的实际内容,即任何公式、脚本等
  • @tehhowch 添加了!我现在有一个新的问题,似乎。谢谢!
  • 确保您已为 Google 表格文件和 Google Apps 脚本项目设置了时区信息。不要忘记 JavaScript 日期具有毫秒分辨率,并且可以识别时区,因此如果您看到类似“2019 年 4 月 17 日 18:00 GMT-6”的日期,它在功能上与“2019 年 4 月 18 日 01:00 GMT+”相同1"

标签: google-apps-script google-sheets


【解决方案1】:

答案Adding Days to a Date - Google Script

三件事:

  • 不要将fecha2定义为new Date();这给它没有上下文,而是返回今天的日期。
  • 设 fecha2 为变量名
  • 正确的说法是var fecha2 = new Date(fecha.setDate(fecha.getDate() + 1));

function so55593876() {
  var ss = SpreadsheetApp.getActiveSheet();
  var range = ss.getRange("C3");
  var value = range.getValue();
  Logger.log("DEBUG: Date Range: "+range.getA1Notation()+", Date value: "+value);//DEBUG
  var date = new Date(value); // make the sheet value a date object
  Logger.log("DEBUG: new date(value) = "+date);//DEBUG
  var dateTime = new Date(date.getTime()+1*3600000*24); 
  Logger.log("DEBUG: Method 1 (add one day = getTime()+1*3600000*24) = "+dateTime);//DEBUG  
  var dateDate = new Date(date.setDate(date.getDate()+1));
  Logger.log('DEBUG: Method 2 (add one day = getdate()+1) = '+dateDate);//DEBUG
  ss.getRange("C4").setValue(dateDate);
  Logger.log("<<<<<<<<<<<FETCHA>>>>>>>>>>>>>");
  var fecha = new Date(value); // make the sheet value a date object
  Logger.log("DEBUG: fecha: new date(value) = "+fecha);//DEBUG
  var fecha2= new Date(); // note there are no parameters; this will return TODAY's date
  Logger.log("DEBUG: fecha2 = "+fecha2);//DEBUG
  var fecha3 = fecha2.setDate(fecha.getDate() + 1);
  Logger.log("DEBUG: fecha3 = "+fecha3); //DEBUG
  var fecha2 = new Date(fecha.setDate(fecha.getDate() + 1));
  Logger.log("DEBUG: fecha2 = "+fecha2); //DEBUG
  ss.getRange("C5").setValue(fecha2);
}

我已将所有Logger 语句留在代码中,以便您可以识别脚本不同状态下的各种值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多