用于条件格式单元格边框的 Google Apps 脚本

问题描述 投票:0回答:1

我有一个包含 26 列和 96 个原始数据的 Google 表格。如果单元格包含与 Z6 单元格值相同的文本,我想更改单元格边框厚度。有没有办法为此编写谷歌应用程序脚本代码。

我尝试了这段代码但失败了

function formatting() {
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Chart');
 var range = sheet.getRange("A1:Z100")
 var ruleRed = SpreadsheetApp.newConditionalFormatRule()
.whenFormulaSatisfied("=$Z$6")
.setBackground("green")
.build();

}

google-sheets google-apps-script conditional-statements conditional-formatting
1个回答
0
投票

几件事:

  • 条件格式的正确公式是:
    "=A1=$Z$6"
  • Apps 脚本中的相应请求(包括必要的范围设置)为:
      var ruleRed = SpreadsheetApp.newConditionalFormatRule() .whenFormulaSatisfied("=A1=$Z$6") .setBackground("green") .setRanges([range]) .build();
  • 创建条件规则后,您需要应用于工作表,例如
    sheet.setConditionalFormatRules([ruleRed]);

不过

  • 边框无法在条件格式范围内格式化,您需要采取另一种方法
  • 您可以使用 Apps 脚本方法 setBorder()
  • 要根据 Apps 脚本的要求设置边框,您需要
    • 检索
      Z6
    • 的值
    • 循环遍历您的范围,将所有值与
      Z6
    • 进行比较
    • 为每个满足条件的单元格分配边框

使用 Apps 脚本进行边框格式设置和条件格式设置的示例:

function formatting() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Chart');
  var range = sheet.getRange("A1:Z100")
  //border formatting 
  var value = sheet.getRange("Z6").getValue();
  var values = range.getValues();
  for (var i = 0; i < values.length; i++){
    for (var j = 0; j < values.length; j++){
      if (values[i][j] == value){
        range.getCell(i+1, j+1).setBorder(true, true, true, true, false, false);
      }
    }
  }
  //conditional formatting 
  var ruleRed = SpreadsheetApp.newConditionalFormatRule()
  .whenFormulaSatisfied("=A1=$Z$6")
  .setBackground("green")
  .setRanges([range])
  .build();
  sheet.setConditionalFormatRules([ruleRed]);
}
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.