【问题标题】:Conditional formatting in Google Sheets: Can I use custom function in the 'custom formula is:' field?Google 表格中的条件格式:我可以在“自定义公式是:”字段中使用自定义函数吗?
【发布时间】:2016-02-15 20:16:58
【问题描述】:

在 Google 电子表格中应用条件格式时,我想知道是否可以在“自定义公式为:”字段中使用我通过脚本编辑器创建的自定义函数。这是我所做的:

  1. 进入“脚本编辑器”并输入我的 fn 如下:

    function foo (param1, param2, param3) {
      if (condition to check) {
        ...some action;
        return true;
      } else {
        return false;
      }
    }
    

    并保存。

  2. 在工作表中,选中单元格并打开“条件格式”对话框

  3. 创建新规则并在“自定义公式为:”字段中输入以下内容

    =foo(param1, param2, param3)
    

很遗憾,这不起作用。


加法

这里是sample sheet...

查看其中的两个任务。我的目标是让“任务标题”自动写入黄色字段内(请参阅第 6 行中我手动输入值的任务)。

我已经尝试过的是: - 分配给H5:BB7 范围内的每个单元格,公式如下:=if(H$4=D5; B5; "")
这将检查开始日期是否等于单元格日期并显示任务标题。 这可以解决问题,但是即使“溢出”已打开,带有任务标题的单元格的内容也会被剪裁,因为下一个单元格不是空的。

【问题讨论】:

  • 您的脚本是否只执行 read 操作?自定义公式不能链接到执行 write 操作的脚本。我们不知道...some action; 是什么。具有自定义公式的单元格状态是什么?只是说:“这不起作用”并没有提供足够的信息。有错误信息吗?这是什么?
  • 嗨桑迪,见我上面的补充。该脚本确实执行了写入操作。

标签: google-apps-script google-sheets gs-conditional-formatting google-sheets-custom-function google-sheets-conditionalformatting


【解决方案1】:

简答

自定义函数不能用作 Google 表格的条件格式内置用户界面中自定义公式的一部分。

说明

在 Google 表格中,custom function 类似于电子表格的内置函数,但由用户使用 Google Apps 脚本编辑器编写。它们不能修改其他对象,只能返回一个或多个值。

另一方面,自定义函数仅在添加到单元格或其中至少一个参数发生更改时才会计算。它们不能使用非确定性函数作为 NOW()、TODAY()、RAND() 和 RANDBETWEEN() 等参数。

测试

为了测试简短答案中的陈述,我创建了以下内容:

  1. 创建一个简单的自定义函数
函数二(){ 返回 2; }
  1. 将自定义函数添加为条件格式侧面板中自定义公式的一部分
=二()=2

结果: 没有任何改变。

参考文献

【讨论】:

  • 自定义函数不能用于条件格式自定义公式,这很糟糕。我也可以验证它对我不起作用。
  • 我“验证”了同样的事情,但不知何故认为这是我的错误。表格应该会发出错误。
  • Sigh... 只是在尝试编写 isStrikethrough() 自定义函数时失败了,所以我可以在条件格式公式中使用它。 :P (下一个答案很好 [添加额外的列 hack] 但会污染工作表,我不想这样做。)自定义函数只采用 value(s)已经够糟糕的了>...我希望将单元格 range (不是它们的值)传递给自定义函数,显然我也不能这样做。 :P
【解决方案2】:

我还发现自定义函数不能用于条件格式。但是,我找到了一个非常简单的解决方法。

我尝试使用的自定义公式是: =hasGreen(CELL("address",$H3)&":"&CELL("address",$M3))

即。根据该行中的一系列其他单元格设置单元格格式。

我的解决方案是将上述公式放入 P 列。然后我将条件格式的自定义公式更改为 =P3

工作就像一个魅力。对 H3:M3 的任何更改都会调用 hasGreen 并更新 P3 的值。条件格式会记录对 P3 的任何更改,并调整格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多