Очистить значение ячейки, когда другая ячейка содержит определенное значение - PullRequest
0 голосов
/ 06 января 2019

Я не очень хорош в этом, но попытался создать скрипт, который смотрит на мою электронную таблицу, и если он видит «1» в определенном столбце («AW»), удаляет значение из другого столбца на тот же ряд ('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();
       }
}
}

Когда он будет запущен, я бы хотел, чтобы значение в столбце 'L' было удалено, когда в столбце 'AW' есть '1'. Это не удаляет это значение, однако, я не получаю никаких сообщений об ошибках.

Ответы [ 2 ]

0 голосов
/ 06 января 2019

или это

    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 и target проверить это

0 голосов
/ 06 января 2019

Попробуйте:

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...