appendRow не работает при добавлении в отфильтрованный диапазон в Google Таблицах - PullRequest
0 голосов
/ 19 июня 2020

Я написал сценарий, который должен добавить строку в отфильтрованный диапазон в Google Таблицах. Мой скрипт работает нормально. Но когда последняя строка целевого диапазона удаляется И диапазон фильтруется по одному из полей (изображение ниже иллюстрирует ситуацию), appendRow не работает.

Снимок экрана с ситуациями, когда appendRow выполняет / не работает. не работает:

[spreadsheet samples] 1

Вот мой код:

function myFunction() {
  outputRowArray = [1,2];
  destinationUrl = "XXX";
  destinationSheet = "Sheet1"

  SpreadsheetApp.openByUrl(destinationUrl).getSheetByName(destinationSheet).appendRow(outputRowArray);  
}

1 Ответ

1 голос
/ 19 июня 2020

Вам не хватает того, что appendRow добавляет строку к листу, это означает, что строка добавляется после последней строки с данными в листе.

В прошлом я встречал похожие вопросы, утверждая, что appendRows не работают, но произошло то, что лист содержал некоторые значения (иногда пустую строку) несколькими строками ниже строк, отображаемых на экране.

Чтобы помочь вам понять, что происходит, запишите некоторые характеристики листов используя методы Class Sheets , такие как

  • getLastRow()
  • getMaxRows()

Для регистрации вещей вы можете использовать Logger.log(something) и console.log(something). для получения дополнительных сведений см. https://developers.google.com/apps-script/guides/support/troubleshooting

Еще можно попробовать записать последнюю строку после добавления новой строки, но имейте в виду, что вам может потребоваться сначала использовать SpreadsheetApp.flush(). Пример:

function myFunction() {
  outputRowArray = [1,2];
  destinationUrl = "XXX";
  destinationSheet = "Sheet1"


  var sheet = SpreadsheetApp.openByUrl(destinationUrl).getSheetByName(destinationSheet);
  sheet.appendRow(outputRowArray);  
  SpreadsheetApp.flush();
  var lastRow = sheet.getLastRow();
  console.info(lastRow);
}
...