如何使用应用程序脚本将相同的条件格式规则应用于 Google 工作表中的多列?

How to apply the same conditional formatting rule to multiple columns in Google sheets using apps script?

我有多个列 - G、L、Q、V、AA、AF - 我想在 Google sheet 中对其应用条件格式规则。从第 2 行开始 - 所以我不包括 header 行 - 如果在该单元格的右侧找到任何文本或数据,我希望指定列中的任何给定单元格为 .setBackgroundColor(“orange”) .例如,如果单元格 H2 中输入了任何内容,我希望单元格 G2 为橙色;如果 S17 有数据,则 L17 为橙色;如果 AD5 不为空,则 AA5 为橙色。

我对应用程序脚本的经验非常原始。我只能成功地编写很少的代码行,所以我的困境超出了我的能力范围。我知道可以使用 sheets 内置的条件格式选项卡来应用条件格式,但它不适用于我的项目,因为我正在使用 Google 表单收集数据,并且每次响应我从表单中收到,sheet 为提交创建了一个新行,保留了 sheet 其余部分的 none 格式。我的计划是在代码中添加一个表单提交触发器,以便列中的条件格式使用 sheet.

定期更新

我在网上找了一段时间,没有找到解决我问题的方法。任何帮助将不胜感激!谢谢!

以下示例显示了创建新条件格式规则并将其应用于 sheet 的过程。然后将范围的格式复制并粘贴到目标范围。您可以在本答案末尾找到参考部分中使用的方法的参考资料。

示例:

function myFunction() {
  // The range where the formatting will be applied.
  var range = 'G2:G'
  // Get the array containing the conditional formatting rules for the sheet
  var spreadsheet = SpreadsheetApp.getActive();
  var conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  // Build the new conditional formatting rule and push it to the array
  conditionalFormatRules.push(SpreadsheetApp.newConditionalFormatRule()
                              .setRanges([spreadsheet.getRange(range)]) // The range to apply to
                              .whenFormulaSatisfied('=H2<>""')  // The formula to check
                              .setBackground('orange') // The format to apply
                              .build());
  // Set the conditional format rules for the sheet with the updated array
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  // Paste the format of the range into the next desired range
  spreadsheet.getRange(range).copyTo(spreadsheet.getRange('L2:L'), SpreadsheetApp.CopyPasteType.PASTE_FORMAT, false);
  /* repeat the previous instructions for all your target ranges replacing "L2:L" with the target range */
};

参考文献:

-getConditionalFormatRules()

-newConditionalFormatRule()

-setConditionalFormatRules()

-copyTo(destination, copyPasteType, transposed)