2013-11-23 2 views
0

У меня есть таблица с матрицей, настроенной для подсчета, сколько раз у студента был урок с конкретным преподавателем.Скрипт Google Apps для подсчета Matrix

Матрица прекрасно работает с этой формулой:

=ARRAYFORMULA(SUM(IF(TERM4!$B$6:$B$2398=B$1,IF(TERM4!$C$6:$C$2398=$A2,1,IF(TERM4!$D$6:$D$2398=$A2,1,FALSE()))),FALSE())) 

однако из-за количества студентов/репетиторы матрица 7000 клетки, замедляя рабочий лист значительно уменьшилось.

Есть ли лучший способ сделать это. Могу ли я запустить скрипт приложения Google для подсчета матрицы на триггере (например, один раз в неделю) для подсчета матрицы, поэтому формулы не замедляют работу листа.

Мне также хотелось бы, чтобы формула возвращала пустой, а не 0, если результат FALSE.

Благодарим за помощь!

ответ

0

Да, его можно сделать с газом. Единственная часть, которая становится немного сложной, заключается в том, что если ваш сценарий занимает более 5 минут, он не обрабатывает все строки. Чтобы этого избежать, обработайте его кусками (скажем, 100 за раз) и используйте scriptProperties, чтобы запомнить, какую таблицу и строку вы в последний раз обрабатывали. Каждый триггер будет обрабатывать столько, сколько может, пока не будут обработаны все электронные таблицы и строки.

+0

Спасибо Zig ... Я довольно новичок в javascript, работая в основном со сценариями из библиотек ... какая формулировка лучше всего найти скрипт, который может сделать что-то подобное, и как я могу получить этот массив работать. – pdrops

+0

Я не уверен, что вы найдете скрипт, который делает именно это. Сначала попробуйте сделать это, предположив, что вы можете обрабатывать весь массив за один проход (без тайм-аута). Вы почувствуете, сколько времени требуется для обработки. Если вам потребуется много времени для обработки, вам придется делать это «кусками», для чего требуется написать небольшой алгоритм, но 1-й - проще. –

Смежные вопросы