![](/img/trans.png)
[英]Comparing '==' in an IF statement is not working Google Sheets script
[英]JavaScript, Google Sheets script - problem with date comparing
我是 Apps Script 的新手,以前从来没有机会写过 JavaScript。 因此,我在 Google 的一张表格中有一个关于客户个人信息(ID、姓名、邮件、联系方式)的数据集。 我在另一张关于客户付款的表格中有另一个数据集(第一期付款的付款日期,第二期付款的日期和金额。最后一张关注的是与未付账单有关的第三张。现在,我想要什么是将有关个人信息的列从第一张表复制到第三张。这里的条件是仅复制第二期付款日期与今天()之间的差异大于 45 的客户的信息。这就是我所拥有的试过:
function Neplacena2Novi() {
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheetFrom=ss.getSheetByName("Podaci o polaznicima"); //Data entry Sheet
var sheetTo=ss.getSheetByName("Neplaceni racuni"); //Data Sheet
var condition=ss.getSheetByName("Uplate novoupisani");
var range1=ss.getRangeByName("Prva rata");
var range2=ss.getRangeByName("Druga rata");
var startRow=3;
var endRow=ss.getLastRow();
function Neplacena2Novi(){
for var(i=startRow; i<(endRow+1)< i++) {
var startDate=new Date(condition.getRange(range1+1).getValue());
var endDate= new Date(condition.getRange(range2+1).getValues());
var difference=parseInt(endDate-startDate)/1000); //Dates are in format dd.mm.yyyy.
if(difference>45){
var values=sheetFrom.getRange(2, 1, sheetFrom.getLastRow(), 4).getValues();
sheetTo.getRange(3,1,1184,4).setValues(values);
}
}
var ui = SpreadsheetApp.getUi();
var potvrda = ui.alert("Odredili ste lica koja treba da se pozovu.");
}
function DugmeDodajKlijenta (){
var ui = SpreadsheetApp.getUi();
}
这段代码有效,但我没有在工作表中得到任何东西。 而且我现在不知道如何将 today() function 包含在差异公式中。 但我真正想要的是创造一个条件,即今天()-startDate()会有所不同。
有人可以帮帮我吗?
该代码不起作用,因为endDate
不是原始值而是二维数组。 使用Range.getValue()
而不是Range.getValues()
,如下所示:
const startDate = new Date(condition.getRange(row, startDateColumn).getValue());
const endDate = new Date(condition.getRange(row, endDateColumn).getValue());
...但这还不足以使代码正常工作。 for
循环行中存在语法错误,循环中未引用i
变量。 整个事情效率很低,因为它逐行读取和写入数据,而不是只进行一次读取和一次写入。
除非电子表格中的“日期”不是数字日期而是看起来像日期的文本字符串,否则new Date()
调用是多余的。 parseInt()
调用也是多余的(另外,它缺少 radix 参数。)
JavaScript 日期内部包含自 1970 年 1 月 1 日 0:00 UTC 以来经过的毫秒数。 要获得两个日期之间的差异,请尝试(endDate-startDate) / 1000 / 60 / 60 / 24
。 请注意,有许多警告 - 请参阅Date 。
整个循环可以替换为Range.getValues().filter()
。 看起来代码最好完全重写。
不清楚为什么首先需要一个脚本,因为使用例如filter()
或query()
的电子表格公式也可以做到这一点。 个人信息可以通过查找例如arrayformula(vlookup())
添加到丢失的付款数据中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.