我正在尝试使用Google表格中两个日期之间的差异来确定将复制originRange的行数。
我收到错误'无法将NaN转换为(类)'因此我假设我需要在公式的某些部分更改日期的格式,但我完全陷入困境。
Google表格中的日期格式为“10/26/2016”& “12/31/2016”如果这有帮助的话。
function fillNewReport () {
var startDate = responseSheet.getRange('C2');
var endDate = responseSheet.getRange('G2');
var dateDiff = (endDate - startDate) + 1;
var newReport = ss.getSheetByName('Copy of Form Responses 1');
var originRange = newReport.getRange(2,2,1,22);
var newRange = newReport.getRange(2,2,dateDiff,22);
originRange.copyTo(newRange);
}
对此的任何帮助将不胜感激。
谢谢,
编辑:第2部分
我认为我现在有正确的格式,因为我不再收到错误。但该公式没有回应。没有正在复制的行。有什么建议吗?
function fillNewReport () {
var startDateValue = responseSheet.getRange('C2').getValue();
var endDateValue = responseSheet.getRange('G2').getValue();
var startDateMilli = new Date(startDateValue);
var endDateMilli = new Date(endDateValue);
var startDate = startDateMilli.getDate();
var endDate = endDateMilli.getDate();
var dateDiff = (endDate - startDate) + 1;
var newReport = ss.getSheetByName('Copy of Form Responses 1');
var originRange = newReport.getRange(2,2,1,22);
var newRange = newReport.getRange(2,2,dateDiff,22);
originRange.copyTo(newRange);
}
答案 0 :(得分:2)
在您的代码中startDate
和endDate
范围,而不是值!
首先,要使用getValue()来改变它。
然后,您将获得不会按预期运行的日期对象,因为与电子表格中的日期不同,javascript日期对象是更复杂的对象,它们具有日期和时间属性,并且具有自引用日期以来毫秒数的本机值。 。 无论如何,您所要做的就是使用互联网上所有javascript参考中描述的日期方法,ask Google for "JS DATE"
然后做你需要的数学,我认为这部分很容易。
正如我在评论中所写,我不确定我明白你想得到什么结果...... 我尝试了一个改变一些细节的测试,我得到了一个结果......你告诉我这是不是你想要的。
function fillNewReport () {
var startDateValue = responseSheet.getRange('C2').getValue();
var endDateValue = responseSheet.getRange('G2').getValue();
var startDateMilli = new Date(startDateValue);
var endDateMilli = new Date(endDateValue);
Logger.log('startDateMilli = '+startDateMilli+' endDateMilli = '+endDateMilli);
var startDate = startDateMilli.getDate();
var endDate = endDateMilli.getDate();
var dateDiff = (endDate - startDate) + 1;
Logger.log('dateDiff = '+dateDiff);
var newReport = ss.getSheetByName('Copy of Form Responses 1');
var originRange = newReport.getRange(2,2,1,22);
var newRange = newReport.getRange(2,2,dateDiff,22);
originRange.copyTo(newRange);
}
或像这样只复制一行
...
var originValues = newReport.getRange(2,2,1,22).getValues();
Logger.log('originValues = '+originValues);
var newRange = newReport.getRange(2+dateDiff,2,1,22); // copies to the other sheet but dateDiff rows underneath...
newRange.setValues(originValues);
}