带有日期(今天)的 Google 表格(脚本)中的 IF 函数

Posted

技术标签:

【中文标题】带有日期(今天)的 Google 表格(脚本)中的 IF 函数【英文标题】:IF function in Google Sheets (scripts) with dates (today) 【发布时间】:2021-07-20 21:10:38 【问题描述】:

这些代码可能有什么问题?

 ...
 spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Daty'), true);
 var today = spreadsheet.getRange('B1').getValue()
 spreadsheet.setActiveSheet(spreadsheet.getSheetByName('ZNC'), true);
 var changeday = spreadsheet.getRange('E2').getValue()
 var nrrej = spreadsheet.getRange('A2')
 if(nrrej!=="" && changeday<today)
 Browser.msgBox("Info");
 else
 ...

脚本不会同时考虑这些条件。分开就好了。

【问题讨论】:

【参考方案1】:

回答

您将range 与string 进行比较

如何解决

变量todaychangeday 是值。它们被定义为getRange('X').getValue()。但是,nrrej 是一个范围,您将它与字符串 ("") 进行比较。检查单元格是否为空白的最佳方法是使用函数isBlank。如果范围完全为空白,则返回 true

最终代码

  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Daty'), true);
  var today = spreadsheet.getRange('B1').getValue()
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('ZNC'), true);
  var changeday = spreadsheet.getRange('E2').getValue()
  var nrrej = spreadsheet.getRange('A2').isBlank()
  if (nrrej == false && changeday < today) 
    Browser.msgBox("Info");
   else  

一些建议

在出现错误之前使用debugger 检查变量的状态 对ctrl + shft + I 使用自动缩进

参考

Range Range: isBlank Range: getValue Use the debugger and breakpoints

【讨论】:

这很有趣,因为如果我检查这个: var nrrej = spreadsheet.getRange('A2').getValue() if (nrrej > "") A script do not see that A2 is空白的。但是如果我从 A2 (nrrej) 中删除 .getValue() 它会看到... 检查单元格是否为空白的最佳方法是使用内置函数,检查我的更新 某事是错误的,因为如果 nrrej 和 changeday 是空白脚本停止。但是如果 sth 在 nrrej(changeday 仍然空白)脚本运行并且当 sth 在 changeday(nrrej 仍然空白)脚本运行 Today (B1) 是公式 =TODAY()。 我已经更新了代码。我没有检查您是否写了nrrej!=="",所以新条件应该是nrrej == false,因为如果单元格为空白,nrrejtrue。如果这不能解决问题,你能给我一些示例数据来测试代码吗?

以上是关于带有日期(今天)的 Google 表格(脚本)中的 IF 函数的主要内容,如果未能解决你的问题,请参考以下文章

Google 表格脚本:带有 HTML 表格的电子邮件,该表格只有一组

使用 Apps 脚本在带有日期的 Google 电子表格中存档

根据 Google 表格中的第一个单元格格式化列中的单元格

带有日期条件的 Google 表格 Sumifs

带有 ARRAYFORMULA 的 MAXIFS 在 Google 表格中不起作用

谷歌表格查询今天日期的所有行