Google表格功能可主动检查单元格

时间:2020-04-19 06:29:37

标签: google-apps-script google-sheets google-sheets-formula

我正在使用一个函数,该函数检查颜色的单元格并在另一列中返回是/否。但是,在应用该功能之后,随后又更改了单元格的颜色,该功能不再适用。

例如,该函数被应用并返回“是”,那么如果我将单元格的颜色更改为白色,则不会返回“否”。是否可以具有主动检查单元格的功能,或者我只需要在每次单元格颜色更改时重新应用该功能?

function GetCellColorCode(input) {

  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var cell = ss.getRange(input); 
  var result = cell.getBackground(); 

  var green = '#d9ead3';
  var white = '#ffffff';

  if (result == green) {
    return 'Yes';
  } else {    
    return 'No';
  }  

}

1 个答案:

答案 0 :(得分:3)

  • 您要在更改背景颜色时刷新单元格中=GetCellColorCode(###)的自定义公式。

为了实现您的目标,我建议使用TextFinder和OnChange事件触发器刷新公式。

用法:

1。示例脚本。

请复制并粘贴以下脚本。

function onChange(e) {
  if (e.changeType === "FORMAT") {
    const formula = "=GetCellColorCode";  // Function name of your custom function.

    const sheet = e.source.getActiveSheet();
    const tempFormula = "=sampleFormula";
    sheet.createTextFinder("^\\" + formula).matchFormulaText(true).useRegularExpression(true).replaceAllWith(tempFormula);
    sheet.createTextFinder("^\\" + tempFormula).matchFormulaText(true).useRegularExpression(true).replaceAllWith(formula);
  }
}
  • 在此示例脚本中,使用TextFinder将=GetCellColorCode替换为其他名称,然后将其修改为=GetCellColorCode。这样,可以刷新自定义公式。
  • 当您在脚本编辑器中直接运行onChange函数时,会发生错误,因为此函数使用OnChange事件触发器的事件对象。请注意这一点。

2。安装OnChange事件触发器。

Please install the OnChange event trigger to the function of onChange.

  1. 从脚本编辑器中,选择编辑>当前项目的触发器
  2. 点击添加触发器
  3. 选择要运行的功能下,选择要触发的功能的名称。
    • 在这种情况下,请选择onChange
  4. 选择事件源下,选择从电子表格
  5. 选择事件类型下,选择更改时
  6. 点击保存

3。试运行。

完成上述流程后,请更改单元格的背景颜色。这样,将触发OnChange事件触发器并运行函数onChange。然后,刷新GetCellColorCode的自定义公式。

在此脚本中,即使复制并粘贴了单元格,也不会运行OnChange vente触发器。请注意这一点。在这种情况下,请修改背景颜色。

注意:

  • 在此答案中,假设您的自定义公式名称为GetCellColorCode。因此,当您更改函数名称时,也请修改上面的脚本。请注意这一点。

参考文献: