Скрипт gApps: deleteRow () не работает - PullRequest
0 голосов
/ 25 мая 2018

Во-первых, вот код, который я пытаюсь заставить работать:

function moveChecked(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheetSrc = ss.getSheetByName("combo (latest)");
  var sheetTgt = ss.getSheetByName("combo (corrected)")
  var sheetSrcData = sheetSrc.getDataRange().getValues();
  var i, j;
  var valuesC = new Array();
  var rowsC = new Array();
  var rowsCk = 0;

  // Find rows label as [c]reate
  for(i=0; i<sheetSrcData.length; i++){
    if(sheetSrcData[i][84] == "c"){
      for(j=0; j<86; j++){  // 86th is the CH column
        valuesC[j] = sheetSrcData[i][j]
      }
      sheetTgt.appendRow(valuesC);
      rowsC[rowsCk] = i+1;
      rowsCk++;
    }
  }

  // Delete moved rows from `sheetSrc`
  for(i=0; i<rowsCk.length; i++){
    sheetSrc.deleteRow(rowsC[i]);
  }
}

Последняя часть кода, где я пытаюсь удалить строки, перемещенные / скопированные на другой лист (sheetTgt), выполняетне удалять строки вообще, т.е. он действительно удаляет строки.Однако массив rowsC содержит все строки, которые мне нужно удалить.Весь код запускается без ошибок.

Ответы [ 2 ]

0 голосов
/ 25 мая 2018
  • rowsCk является целым числом, а не массивом, поэтому не имеет свойства длины.
  • При удалении строк начните снизу, чтобы избежать изменения номеров строк строк, которые должны быть удалены в будущем.

Попробуйте изменить с:

// Delete moved rows from `sheetSrc`
for(i=0; i<rowsCk.length; i++){

Кому:

// Delete moved rows from `sheetSrc`
rowsC.reverse(); //array reversed
for(i=0; i<rowsC.length; i++){ //k removed
0 голосов
/ 25 мая 2018

deleteRow в качестве параметра требуется целое число; оно относится к позиции строки, начинающейся с 1.

Чтобы удалить несколько последовательных строк одновременно, вы можете использовать deleteRows .

Чтобы удалить несколько непоследовательных строк, создайте массив номеров строк для удаления, затем используйте цикл или метод массива, например, forEach, чтобы использовать deleteRow(rowNumber), где rowNumber - переменная для обработки позиции строкиудаляемые строки.

ВАЖНОЕ ПРИМЕЧАНИЕ: Зацикливайте массив в обратном порядке, чтобы избежать необходимости корректировать положение строк, ожидающих удаления, для удаления строк.

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