我在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)
¿有帮助吗?
答案 0 :(得分:0)
答案是 在Adding Days to a Date - Google Script中。
三件事:
fecha2
定义为新的Date();这没有上下文,而是返回今天的日期。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
语句留在了代码中,以便您可以识别脚本不同状态下的各种值。