如何使用应用程序脚本将相同的条件格式规则应用于 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 */
};
参考文献:
我有多个列 - 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 */
};