Вопрос по – Получить строки из данных электронной таблицы, используя скрипт приложения Google

23

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

Моя таблица имеет

+-------------+-----------+----------------------+
| 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 на имя пользователя и отображать их с помощью меток в app-script (который работает как веб-сервис).

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

EDIT

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

применение=Filter Формула для ячейки TMP также будет проблемой, так как сценарий может использоваться одновременно несколькими людьми.

К сожалению, нет способа получить значения с примененным фильтром. Но если ваши данные растут до миллионов строк, сценарий не будет вашей главной задачей, поскольку электронная таблица может содержать только 400 тысяч ячеек. Henrique G. Abreu

Ваш Ответ

2   ответа
8

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

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
30


получить значения в массиве, используя

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]] );

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

for (i in labels) { ...
Error: User Rate Limit Exceeded palaniraja
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded palaniraja
Error: User Rate Limit Exceeded

Похожие вопросы