Выполнить формулу следующих 10 строк - PullRequest
1 голос
/ 22 июня 2019

У меня есть сценарий concat_custom, который я хочу выполнять по 10 строк за раз.

Например, в этом листе:

enter image description here

https://docs.google.com/spreadsheets/d/1O1rZUstDNSXPdUVXvaDfPO4rAQs2cJWHimfGxbddtNU/edit#gid=450240458

Пользовательская функция:

function concat_custom(s, array) {
    array = conformToOneDimensionalArray(array);

    return array.filter(function (value) {
      return value != "";
    }).join("-");
}

function conformToOneDimensionalArray(value) {
  if (!Array.isArray(value)) {
    value = [value];
  }
  else if (Array.isArray(value[0])) {
    value = value.reduce(function(a, b) {
      return a.concat(b);
    });
  }

  return value;
}

Я бы хотел, чтобы в столбце C был текст Ted-John, а не =concat_custom("-",A1:B1), поэтому столбец C будет независим от A & B. Как я могу обработать, скажем, 10 строк за раз в этом примере?

Я хотел бы иметь возможность обрабатывать 10 строк каждую минуту через синхронизированные триггеры. Таким образом, он проверяет последний ряд, а затем продолжает оттуда.

1 Ответ

1 голос
/ 23 июня 2019

Попробуйте это:

function withadash() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var nextrow=getNextRowInColumn3();
  if(nextrow>0) {    
    var rg=sh.getRange(nextrow,1,10,3);
    var vA=rg.getValues()
    for(var i=0;i<vA.length;i++) {
      vA[i][2]=vA[i][0]+'-'+vA[i][1];
    }
    rg.setValues(vA);
  }
}

function getNextRowInColumn3() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var rg=sh.getRange(1,3,sh.getLastRow(),1);
  var vA=rg.getValues();
  for(var i=0;i<vA.length;i++) {
    if(!vA[i][0]) {
      return i+1;
    }
  }
  return 0;
}
...