Подтвердить что ты не робот

Извлечение строк из данных электронной таблицы с помощью приложения google script

Я использую приложение Google script для записи данных формы в электронную таблицу. Теперь я хотел бы получить значения из Excel, которые соответствуют условиям (например, отфильтрован по дате, имени пользователя) и отображать их с помощью приложения script.

В моей таблице

+-------------+-----------+----------------------+
| Date        | Username  | Comment              |
+-------------+-----------+----------------------+
| 2012-05-02  | palani    | My first comment     |
| 2012-05-02  | raja      | My second comment    |
| 2012-05-03  | palani    | My third comment     |
| 2012-05-03  | raja      | My fourth comment    |
+-------------+-----------+----------------------+

Теперь я хочу отфильтровать данные для 2012-05-02 в дате и raja по имени пользователя и отобразить их с помощью меток в приложении script (который работает как веб-служба).

Все мои поисковые запросы возвращают решение, используя SpreadsheetApp.getActiveSheet().getDataRange();, который, я думаю, не оптимизирован, чтобы отображать одну запись из 1000+ строк в листе.

ИЗМЕНИТЬ

Сейчас я использую только .getValues(). И приведенные здесь данные относятся к образцу; мой настоящий лист имеет 15 столбцов и 5000+ строк. И в конечном итоге это вырастет до миллионов, поскольку это приложение для расписания. Мне интересно, есть ли другой способ getValues() отфильтрованных строк?

Применение формулы =Filter в ячейке tmp также будет проблемой, поскольку script может использоваться одновременно числом людей.

4b9b3361

Ответ 1

Самый простой способ и тот, который я знаю, - это:
получить значения в массиве с помощью

var data = SpreadsheetApp.getActiveSheet().getDataRange().getValues();

то для создания цикла

for (i in data) {

в этом цикле, чтобы проверить, равна ли дата (data[i][0]) той, которую вы ищете, и если имя (data[i][1]) равно тому, которое вы ищете. И нажмите на массив

var labels=new Array;
label.push( [data[i][0], data[i][1], data[i][2]] );

затем имея все ваши данные в этом массиве, вы можете заполнить панели Ui меткой, используя цикл for

for (i in labels) { ...

Ответ 2

Ну, вы можете рассмотреть использование ячейки и использовать на ней формулу "Запрос". Предположим, что дата находится в столбце A, имя пользователя = столбец B, комментарий - столбец C, а пустая ячейка - D1, ваш script будет выглядеть следующим образом:

SpreadsheetApp.getActiveSheet().getRange("D1").setFormula('Query(A:C,"SELECT A,B,C WHERE B="' + "SomeOne'" + ',1)'; //filter the data and populate to D1 onwards    
SpreadsheetApp.getActiveSheet().getRange("D:F").getValues();//this is the filtered data