Перебирая все записи в Google Sheet с динамическим диапазоном - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь создать процесс, работающий через динамический диапазон в Google Sheet.Длина таблицы может варьироваться от 1 до 200. Моя программа должна иметь возможность работать с таблицей независимо от количества строк.

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

А другой не слишком хорошо обрабатывает все длины таблиц.

Есть ли какие-либодругой подход, который я могу использовать, чтобы исправить это.Я читал о "getDataRanges".Но я не уверен, может ли это сработать в моей ситуации.

Есть идеи?

  1. Этот подход статичен.В этом случае это дает мне массив из 2 строк.Я рассмотрел использование этого и установив его, например, (2200,3,6).Для работы с любыми диапазонами, содержащими менее 200 строк.Затем посмотрите на каждый ряд, чтобы увидеть, пуст он или нет.Если он пуст, я ничего не могу поделать и пропустить.
var data = sheet.getRange(2,1,3,6).getValues();
Этот подход немного более динамичен.Так как он использует Ctrl + Shift + правая кнопка + кнопка вниз, чтобы создать диапазон всех существующих данных в таблице.Однако, это не работает, если есть только 1 строка, например.Так как он будет выбирать много и много строк при выборе вниз.
spreadsheet.getCurrentCell().getNextDataCell(SpreadsheetApp.Direction.NEXT).activate();
  spreadsheet.getRange('A2:V2').activate();
  var currentCell = spreadsheet.getCurrentCell();
  spreadsheet.getSelection().getNextDataRange(SpreadsheetApp.Direction.DOWN).activate();
  currentCell.activateAsCurrentCell();

  var selection = SpreadsheetApp.getActiveSpreadsheet().getSelection();
  var activeRange = selection.getActiveRange();

  var range = '';
  var sel = SpreadsheetApp.getActive().getSelection().getActiveRangeList().getRanges();
  for(var i = 0; i < sel.length; i++){ 
  range += sel[i].getA1Notation();
    }

1 Ответ

0 голосов
/ 10 апреля 2019
var data = sheet.getDataRange().getValues();
  for(var i = 0; i < data.length; i++){ 
  if (data[i][0] = "") continue; //blank row
  range += data[i].getA1Notation();
}

Действительно будет хорошо работать для вас.

Тем не менее, проверка на наличие пустых строк не медленная, если вы делаете это в массиве, а не с отдельными операторами "getValue". Что вы надеетесь достичь здесь?

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