Используйте несколько importrange с различной длиной - PullRequest
4 голосов
/ 08 октября 2019

Я новичок в кодировании, но я пытаюсь сделать так, чтобы мне было очень сложно ...

У меня около 50 таблиц и я хочу импортировать некоторые данные из каждого из них. Я успешно использовал while для автоматического импорта данных, проблема в том, что каждая электронная таблица имеет свою длину, все начинается в ячейке A20 и продолжается до столбца T, но последнее число отличается. Я использовал фиксированное число (250), но оно создает пустые строки между данными.

Можно ли персонализировать выбор диапазона, чтобы я мог избежать пустого пространства между данными? Или есть какой-то код для удаления пустых строк между данными?

Мой код пока ...

function funil_usando_FOR () {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('A3').activate();

  i = 3
  while (true) {
    var range = spreadsheet.getRange("Z" + i);
    var value = range.getValue();

    if(value == "") {
      break;
    }

    spreadsheet.getCurrentCell().setFormula('=importrange("'+value+'", "NOVO FUNIL!A20:T250")');
    spreadsheet.getCurrentCell().offset(251, 0).activate();
    i++;
  }  
}

1 Ответ

4 голосов
/ 08 октября 2019

Ответ:

Существует несколько способов, позволяющих получить последнюю строку, в которой данные представлены в Google Sheet.

Методы:

Вероятно, самый простой способ - это использование getDataRange() метода Sheetкласс. Возвращает диапазон, равный измерениям, в которых присутствуют данные:

var range = spreadsheet.getDataRange();

Следуя предыдущему методу, если вы не хотите получать диапазон и только количество строк, вы можете вызвать метод getNumRows() возвращаемого объекта Range:

var range = spreadsheet.getDataRange();
var lastRow = range.getNumRows();

Вы также можете получить целочисленное значение последней строки этого диапазона, используя getLastRow()метод - этот метод возвращает последнюю строку в диапазоне - но имейте в виду, что, например, getNumRows(), вместо того, чтобы возвращать диапазон, например getDataRange(), он возвращает целое число, поэтому вам все равно придется использовать его в getRange() метод, который вы использовали:

var range = spreadsheet.getDataRange();
var lastRow = range.getLastRows();

Этот метод в основномтак же, как и в прошлом - хотя это метод класса Sheet, а не класса Range. Его вариант использования такой же, и он возвращает целочисленное значение последней строки на листе таким же образом. Это, вероятно, лучше всего использовать, если вам нужно только значение последней строки, так как его нужно определить меньше, и вам не нужно извлекать его из возвращенного диапазона:

var lastRow = spreadsheet.getLastRow();

Ссылки:

...