首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回false的IF语句,即使它是true

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

Stack Overflow用户
提问于 2022-01-18 21:02:12
回答 1查看 130关注 0票数 0

我创建了一个脚本,通过升序日期来排序电子表格行,它应该隐藏月份与我们当前所在的月份不一样的所有行。下面是剧本:

代码语言:javascript
复制
  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行,并且它们都返回"1",即1月。

少了什么?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-18 21:05:29

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

这个var r = sheet.getRange(3, 3, sheet.getLastRow() -2);会比这个var r = sheet.getRange('C3:C');好..。在调试器中看看这个。您通常在getLastRow()和maxRows之间获得空。

你也可以使用var r = sheet.getRange('C3:C').getValues().filter(e => e[0]);,用虚假和真实的方式消除空白处。

您还可以使用valueOf()和getTime()进行很多日期比较,因为它们都从引用日期返回毫秒,因此可以对它们进行数值比较。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70762322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档