Google Sheet Apps Script - изменение данных ячейки и увеличение на одну строку - PullRequest
0 голосов
/ 17 ноября 2018

Я пытаюсь .. 1) заменить подстроку из содержимого активной ячейки на моем листе и .. 2) переместить активную ячейку вниз на одну точку и повторять до тех пор, пока значение активной ячейки не станет пустым.Вот моя функция, но когда я ее запускаю, ничего не происходит ... Кто-нибудь может понять почему?

  var app = SpreadsheetApp;            
  var mySheet = ss.getSheetByName('NAME');
  var activeCell = mySheet.getActiveCell();
  var cellValue = activeCell.getValue();
  var activeRow = activeCell.getRow();

  function replaceStringInCell(){
     while(cellValue != ''){
       var newCellValue = cellValue.replace('MC/Visa/Discover', 'CC');
       activeCell.setValue(newCellValue); 
       activeRow++;
       mySheet.getRange(activeRow, 7).activate();
  }
}

1 Ответ

0 голосов
/ 19 ноября 2018

Проблема:

  • Ненужные циклы над каждой ячейкой

Решение:

  • Использовать пакетные операции

Пример сценария:

 function replaceColA() {
  var ss = SpreadsheetApp.getActive();
  var mySheet = ss.getSheetByName('NAME');
  var cellRange = mySheet.getRange('A1:A' + mySheet.getLastRow());
  var cellValues = cellRange.getValues().map(replaceStringInCell); //call replace function on all values in range
  cellRange.setValues(cellValues); //set mapped values back to range 
}
function replaceStringInCell(cellValue) {
  if (cellValue.map) {
    //if cellValue is a array
    return cellValue.map(replaceStringInCell); //recurse
  } else {
    return cellValue.replace('MC/Visa/Discover', 'CC');
  }
}

Читать:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...