Google App脚本 - 基于另一个单元格的条件格式

时间:2015-03-03 00:38:57

标签: google-apps-script formatting google-sheets gs-conditional-formatting

我正在尝试弄清楚如何在Google电子表格中使用条件格式设置,类似于使用条件格式设置功能。<​​/ p>

我有两个标有&#39; Country&#39;和&#39;州。&#39;如果一个单元格中的值是“美国”,那么&#39;我希望脚本检查相邻的州列,以确保它不是空白。如果是,我希望单元格背景变为红色。

有没有办法在脚本中执行此操作?我不想使用内置功能,因为它不会复制到电子表格中新创建的工作表,因为我将让其他用户创建新工作表。

我找到了一些参考资料,但我很难根据自己的需要定制它们。

链接:Google Spreadsheet conditional formatting script

https://webapps.stackexchange.com/questions/16745/google-spreadsheets-conditional-formatting-based-on-another-cells-content

2 个答案:

答案 0 :(得分:0)

假设Country位于(1,1),State位于(1,2),其中(i,j)表示电子表格中的第i行和第j列。 Google Spreadsheets是1索引,意味着索引从1开始。

var activeSheet = SpreadsheetApp.getActiveSheet();

for (var a = 2; a < activeSheet.getLastRow(); a++) {
   if (String(activeSheet.getRange(a,1).getCell(1,1)) === "United States") { 
       if (String(activeSheet.getRange(a,2).getCell(1,1)) === null) { 
          activeSheet.getRange(a, 2, 1, 1).setBackgroundColor('red'); 
       } 
   } 
}

答案 1 :(得分:0)

尝试将其复制并粘贴到空白脚本文件中。这取决于列A是国家/地区,列B是国家/地区,但您可以根据需要制作任意数量的工作表,这将自动生效。

如果您想要解释特定部分,请告诉我,因为我不确定您的脚本背景是什么。我在代码中包含了一些注释。

function onEdit(e) {

  var ss = e.source;
  var sheet = ss.getActiveSheet();
  var range = sheet.getRange("A:B");
  var values = range.getValues();

  //for each row that data is present
  for(var i = 0; i < values.length; i++) {
    var cell = sheet.getRange(i + 1, 2);

    //check if the first value of that row is exactly "United States"
    if(values[i][0] === "United States") {

      //if it is, check for a blank cell.  If so, make it red.
      if(values[i][1] === "") {
        cell.setBackground('red');
      } else {
        cell.setBackground('white');
      }

    } else {

      //In any other case, make it white.
      cell.setBackground('white');
    }
  }  
}