如何将日期值汇总为一个数字(天数)?

时间:2019-04-09 13:17:26

标签: google-apps-script google-sheets spreadsheet

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

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

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

直接求和仅将日期和数字作为字符串。 尝试上述方法将导致#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)

¿有帮助吗?

1 个答案:

答案 0 :(得分:0)

答案是 Adding Days to a Date - Google Script中。

三件事:

  • 不要将fecha2定义为新的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语句留在了代码中,以便您可以识别脚本不同状态下的各种值。