当另一个单元格包含特定值时清除该单元格的值

时间:2019-01-06 15:45:50

标签: google-apps-script google-sheets

我不是很擅长此事,但是尝试制作一个脚本来查看我的电子表格,如果在特定列('AW')中看到“ 1”,则从该列的另一列中删除该值同一行(“ L”)。

我觉得我与下面的内容已经很接近了,但是运行脚本时什么也没发生。这很可能是很多问题,如果这不是问我问题的正确方法,我很抱歉-它告诉了我先前提出的问题并没有得到很好的回答,因此我很可能被禁止问更多。在过去的48小时里,我一直在寻找答案。

function wipeName() {
var s = SpreadsheetApp.getActiveSheet();
    var r = s.getRange('AW2:AW51');
if( s.getName() == "GB Spreadsheet" ) 
{
       if( r.getColumn() == 1 && r.getValue() == '1') 
       {
          var nextCell = r.offset(0, -37);
              nextCell.clearContent();
       }
}
}

当它运行时,如果列“ AW”中有一个“ 1”,我希望删除列“ L”中的值。它没有删除该值,但没有收到任何错误消息。

2 个答案:

答案 0 :(得分:0)

尝试一下:

function wipeName(){
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var rg1=sh.getRange('AW2:AW51');//condition range
  var vA1=rg1.getValues();
  var rg2=sh.getRange('L2:L51');//output range
  var vA2=rg2.getValues();
  for(var i=0;i<vA1.length;i++){
    if(vA1[i][0]==1){//note: single columns are still 2d arrays. If condition range equals 1 the set output range to null
      vA2[i][0]='';
    }
  }
  rg2.setValues(vA2);
}

答案 1 :(得分:0)

或这个

    function check() {
  var check = "C:C",
      target = "H:H",
      state = 2,
      s = SpreadsheetApp.getActiveSheet(),
      r = s.getRange(check),
      t = s.getRange(target),
      lr = s.getLastRow()-1, //last data without header
      rc = r.getColumn(),
      tc = t.getColumn(),
      r2 = s.getRange(state,rc,lr,1), //get specific range
      val = r2.activate().getValues();
  Logger.log(val.length); //Logger will give current data length

  for(var x = 0; x<val.length; x++){
    if(val[x][0]==1){
      var dat = s.getRange(x+state,tc).activate();
      dat.clear();
    }
  }
}

确保更改var 检查目标 check this out