google-apps-script - 如何将日期值总结为一个数字(天数总和)?
问题描述
在 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)。
解决方案
答案是在为日期添加天数 - Google 脚本中。
三件事:
- 不要定义
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
语句保留在代码中,以便您可以识别脚本不同状态下的各种值。
推荐阅读
- android-studio - Android POST 调用使用 Retrofit 获取 Server 500 错误
- sql - 基于join的动态删除语句?
- javascript - 如何重启JS游戏?
- android - 如何使用 Gson 正确序列化/反序列化 kotlin 中的复杂对象?
- java - JDBC 侦听器未收到 DatabaseChangeNotification Android Studio
- django - Django 使用 RangeWidget 验证表单
- google-cloud-dataproc - 如何从 Cloud Function 运行创建 Dataproc 集群、运行作业、删除集群
- javascript - 将 Django ORM 数据获取到 Javascript 进行评估
- vb.net - 将以下 VB.NET 代码转换为 Lambda/LINQ
- vba - 将word注释转移到excel