IF 语句返回 false,即使它是真的



我制作了一个脚本,按升序排列电子表格的行,它应该隐藏月份与我们当前所在月份不同的所有行。这是脚本:

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Diário de Caixa');
sheet.getRange('A3:M').activate();
sheet.getActiveRange().sort({column: 6, ascending: true});
var r = sheet.getRange('C3:C');
var date = new Date();
var mesAtual = Utilities.formatDate(date, Session.getScriptTimeZone(), "M");
var v = r.getValues(); 
for(var i=v.length+1;i>=0;i--){
if(v[0,i]!=mesAtual){
sheet.hideRows(i);
}
}
}

当我写这个问题的时候,我已经填充了数据,直到第36行,所以脚本应该隐藏第36行下面的所有行,但它也隐藏了第34、35和36行,即使它们的公式和值等于第3到33行,并且它们都返回"0";1〃;,代表一月。

缺少什么?

提前感谢!

我认为这个v[0,i]应该是v[i][0]

并且该CCD_ 3将比该var r = sheet.getRange('C3:C');更好。。。在调试器中查看这一点。您经常在getLastRow((和maxRows之间得到null。

您也可以使用var r = sheet.getRange('C3:C').getValues().filter(e => e[0]);并使用falsy和truthy 消除空

您还可以使用valueOf((和getTime((进行大量日期比较,因为它们都返回了参考日期的毫秒数,因此您可以对它们进行数字比较。

最新更新