date - 知道开始和结束时如何使用谷歌应用程序脚本获取天数
问题描述
使用谷歌应用程序脚本,我试图计算两个用户定义的日期(包括开始和结束)之间的天数。我已经尝试了许多我在谷歌上搜索过的代码迭代,但所有代码要么完成运行,要么没有结果,要么返回NaN
。
为了获得全局,我有一张表格需要计算两个用户定义日期之间每个日历日的多个值。我想我首先计算日期之间的天数,然后使用另一个函数创建日期列表,然后使用第三个函数插入计算值。
这是我承认需要帮助的地方:
function daysInRange() {
var a = new Date(shtCalc.getRange(2, 3)); // dd/mm/yyyy, 01/02/2019
var b = new Date(shtCalc.getRange(2, 6)); // dd/mm/yyyy, 28/02/2019
var days = Math.floor((a-b)/(24*3600*1000));
Logger.log(days);
}
我也试过:
- 在 shtCalc 范围的末尾添加
.valueOf()
和.getTime()
- 不包含范围
new Date()
我期待Logger.log(days);
回来28
,但我得到了NaN
。请帮忙。
解决方案
问题
如果您分解正在发生的事情,您会看到a-b
在您的情况下尝试对Range
类的两个实例执行数学运算,因此返回NaN
. 然后NaN
除以24*60*60*1000
,这也是NaN
,最后,Math.floor()
调用NaN
也返回NaN
:)
解决方案
您需要从 中显式提取值Range
才能对其进行操作。SpreadsheetApp
类有两种方便的方法:getValue()
,这将提取左上角单元格的值Range
, 和getValues()
,它将提取二维Array
结构中的所有值,如下所示:
[ //pseudo-code;
row1: [ col1, colN ],
rowN: [ col1, colN ]
]
样本
稍作修改,您的代码应如下所示:
function daysInRange() {
var a = new Date( shtCalc.getRange(2, 3).getValue() );
var b = new Date( shtCalc.getRange(2, 6).getValue() );
var days = Math.floor((a-b)/(24*3600*1000));
Logger.log(days);
}
有用的链接
推荐阅读
- vim - 与我的本地(ubuntu)PC 相比,Vi/Vim 在远程服务器上的行为完全不同
- python - (Python) 完全不熟悉编码,只是尝试一些简单的代码,如果你说好,我想说一件事,如果你说不,我想说另一行
- laravel - required_if 在 Laravel 中有多个字段
- javascript - javascript - 获取多个子数组的最大值/最小值
- c# - 无法通过 POST API 调用提交表单数据
- flutter - 无论使用来自 qr_flutter 包的 QRImage 小部件的 size 属性,QR 图像的大小都不会改变
- python-3.x - 在 python 3.7 中显示 tensorflow 2.4.1 的版本
- c# - Windows 窗体按钮代码
- firebase - Firebase手机身份验证与android 9
- c# - AppContainer 未处理的异常