使用脚本进行条件格式化

时间:2016-09-09 11:35:19

标签: google-apps-script google-sheets google-spreadsheet-api

我的谷歌电子表格条件格式的问题是边框。我试着在这上面写一个脚本,但我被困了

在我的第一个屏幕截图中,您可以看到数据,在第7行和第A列中,我添加了一个触发器,告诉脚本是否需要进行格式化。如果有1,那么0时应该有边框,或者不应该有空白。 Screenshot 1

我的想法是我得到了网格D12到J32的边界,但是由于0,行18,27和32应该没有边框。而且单元格D12到J32不能被硬编码,因为它们是可变的,1次它可能直到第32行,另一个直到55与列相同,它可以从D直到L,但也从D直到E.这可能都会根据变更单元格B9调用的模板而改变。

添加边框Screenshot 2

之后的示例

我到目前为止编写的脚本考虑了基于单元格B9的onedit并从D12移除了所有边框,直到底部和侧面,但它保持边框顶部和左边完好无损。 问题我不确定如何编写一个脚本,添加带有可变范围的边框。我猜测最简单的方法是让它先写一个较大的边框表,然后再删除某些行上的垂直边框。

非常感谢这方面的帮助。

function onEdit(e) {  
var sheet = e.source.getActiveSheet()
if (sheet.getName() !== 'View' || e.range.getA1Notation() !== 'B9') return;
 var range = SpreadsheetApp.getActiveSheet().getRange(12,4,100,13);
  range.setBorder(false, false, false, false, false, false);
 }

1 个答案:

答案 0 :(得分:1)

我做了一个功能,但是相反,先删除所有边框,然后在需要的地方添加边框。但是我没有用B9等中的模板来理解你的故事......所以我所做的就是如果单元格B9中有单词Update,那么它将完成工作,更改B9的单元格Done的内容。根据我的理解(或不理解),我相应地将边界更改为范围A上的内容 这是我的代码:

function onEdit(e) {
  var start = 12;
  var sheet = e.source.getActiveSheet()
  if (sheet.getName() == 'Sheet1' && e.range.getA1Notation() == 'B9' && e.range.getValue() == "Update") {
    var index = SpreadsheetApp.getActiveSheet().getRange("A12:A").getValues();
    SpreadsheetApp.getActiveSheet().getRange("D12:J").setBorder(false, false, false, false, false, false);
    for(var i in index) {
      var range = SpreadsheetApp.getActiveSheet().getRange("D"+(Number(i)+start)+":J"+(Number(i)+start));
      if (index[i][0] == 1) {
        range.setBorder(true, true, true, true, true, true);
      }
    }
    sheet.getRange("B9").setValue("Done");
  }
}