如何在Google工作表编辑器脚本中循环getRange(“ B” +行+“:” +“ J” +行)

时间:2019-11-04 15:48:18

标签: loops google-apps-script google-sheets google-sheets-macros

function onEdit(evt) {

var range = evt.range;

showAutoValue(range);

}

function showAutoValue(range){

  var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();

  var activeSheet = spreadSheet.getActiveSheet();

  var row = range.getRow();

  var column = range.getColumn();

  if(column == 1 && row >= 1){

    var Avalue = activeSheet.getRange("A" + row).getValue();

    var B_Jrange = activeSheet.getRange("B" + row + ":" + "J" + row);

    if(String(Avalue).trim()){
      for(var i = 0; i < B_Jrange.length; i++){
        if(String(B_Jrange[i].getValue()).trim().toLowerCase() == "change moi"){
          B_Jrange[i].setBackground(Avalue);
        }
      }
    }
  }

}

1 个答案:

答案 0 :(得分:0)

使用onEdit()选择和突出显示范围

好吧,我想了更多,我决定将columnA设置为白色,黄色,浅绿色,浅蓝色的数据验证列表,因为您必须牢记要生成onEdit触发器,您实际上必须进行一些更改。因此,在这种情况下,您要将范围e.range.getSheet()。getRange(e.range.rowStart,2,1,8)的背景颜色更改为在该行的A列中选择的值。因此,无需循环即可完成此操作。

function onEdit(e){
  var sh=e.range.getSheet();
  if(e.range.columnStart==1){
    if(String(sh.getRange(e.range.rowStart,1).getValue()).trim()){
      sh.getRange(e.range.rowStart,2,1,8).setBackground(sh.getRange(e.range.rowStart,1).getValue()); 
    }else{
      sh.getRange(e.range.rowStart,2,e.range.rowEnd,8).setBackground('white').getValue(); 
    }
  }
}

如果您选择了A列的所有内容并按回车键,则此版本也会清除整个范围。它将p列设置为No选择,而if / else语句的第二部分则清除了整个范围的背景。

enter image description here