- PVSM.RU - https://www.pvsm.ru -

Google Drive. Отчет с данными из таблицы. Создание простенькой БД. Часть 2

Google Drive. Отчет с данными из таблицы. Создание простенькой БД. Часть 2Продолжаем исследовать Google Drive, в прошлой части [1] было автоматизировано простое создание отчетов по данным из таблицы. В этой части рассмотрим создание GUI [2]

Предположим что компания обзавелась секретаршей которая бы отсылала акты, но ведь не будешь же обучать ее что нужно зайти в скрипты, нажать запустить скрипт, затем его отправить и т.д. нужно сделать графический интерфейс для нее.

Весь графический интерфейс Google Script Api (GAS) основан на Google Web Toolkit (GWT) [3], только очень упрощенном варианте (нет много методов объектов которые есть в GWT).

Создать интерфейс пользователя можно двумя способами: с помощью GUI Builder, с помощью кода. С помощью последнего предпочтительнее, т.к. GUI Builder не предоставляет доступа ко всем виджетам GUI.

GUI Builder ЭКСПЕРИМЕНТАЛЬНАЯ ФУНКЦИЯ
В левой части расположены доступные для GUI Builder`а виджеты, справа свойства выделенного виджета (количество свойств так же ограниченно). Элементы легко перетаскиваются на форму без каких либо проблем, позволяя быстро составить наглядный интерфейс.
Более подробно можно почитать на Google Developers [4]. Там описывается процесс создания интерфейса в билдере и вызов созданной формы из кода.
Google Drive. Отчет с данными из таблицы. Создание простенькой БД. Часть 2

Интерфейс из кода
Для интерфейса нашей БД требуется виджет календаря, который не доступен в GUI Builder, однако такой виджет имеется в документации [5], а значит его можно создать с помощью кода.

Создание виджета можно посмотреть наглядно в документации к виджету DatePicker [6], не буду приводить листинг.

Client & Server Handlers
Немного о событиях. Обработчики событий бывают 2 видов: клиентские [7] и серверные [8].
function main
Клиентские позволяют работать только с интерфейсом пользователя без обращения к данным на стороне сервера (проверка заполнения полей, изменение стилей виджетов). Про проверку полей, а так же про ClientHandlers можно почитать тут [9].
Серверные предоставляют больший функционал, такой как работа с данными (получение иили запись).

When a ServerHandler is invoked, the function it refers to is called on the Apps Script server in a «fresh» script. This means that no variable values will have survived from previous handlers or from the initial script that loaded the app. Global variables in the script will be re-evaluated, which means that it's a bad idea to do anything slow (like opening a Spreadsheet or fetching a Calendar) in a global variable. If you need to save state on the server, you can try using ScriptProperties or UserProperties.

Данная фраза гласит, что при обработке события вызывается новая копия скрипта, и для передачи глобальных данных необходимо использовать UserProperies or ScriptProperties. Это очень важно, т.к. могут возникнуть трудности при отладке (форма есть, доступ к виджету есть, юзеру показываются данные, но из скрипта эти данные не видны). Еще одна особенность событий, точки остановки дебагера не срабатывают внутри функции обработки событий.
Trigers
Тригеры [10] позволяют запускать скрипт по какому то событию, или по времени. Пока тригеров не много, а именно 3 для таблицы + временные тригеры.
Google Drive. Отчет с данными из таблицы. Создание простенькой БД. Часть 2
Что в итоге
Окно управления актами открывается автоматически при открытии Таблицы, настроен запуск основной функции в тригерах.
Сверху расположено меню с действиями, под ним статусная строка (отображает статус действия). Под ними:
Слева — календарь (при выборе даты обновляются поля справа), справа-вверху — список всех не составленных актов, под ним список работ на выбранный в календаре день.
Google Drive. Отчет с данными из таблицы. Создание простенькой БД. Часть 2
Данные заносятся с помощью созданной формы [11] (не формы из кода, а именно Google Drive Формы)
Ссылки
Демо проект с кодом [12]
Документация Google Apps Script [13]
Работать есть над чем, но для простой конторки (а так же моих потребностей) вполне хватит и этого. Повторю, что все это делалось с целью «прощупывания» Google Drive, в умелых руках он способен на многое. Но кто будет делать все это когда есть готовые продукты?
______________________

Текст подготовлен в Редакторе Блогов [14] от © SoftCoder.ru

Автор: Actor


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/google-drive/9509

Ссылки в тексте:

[1] прошлой части: http://habrahabr.ru/post/145416/

[2] GUI: http://ru.wikipedia.org/wiki/GUI

[3] Google Web Toolkit (GWT): http://ru.wikipedia.org/wiki/GWT

[4] Google Developers: https://developers.google.com/apps-script/guide_gui_builder?hl=ru

[5] документации: https://developers.google.com/apps-script/service_ui?hl=ru

[6] документации к виджету DatePicker: https://developers.google.com/apps-script/class_datepicker?hl=ru

[7] клиентские: https://developers.google.com/apps-script/class_clienthandler?hl=ru

[8] серверные: https://developers.google.com/apps-script/class_serverhandler?hl=ru

[9] тут: http://googleappsdeveloper.blogspot.com/2011/11/creating-more-responsive-applications.html

[10] Тригеры: https://developers.google.com/apps-script/guide_events?hl=ru

[11] созданной формы: https://docs.google.com/spreadsheet/viewform?formkey=dEpBYjBaemJjNTBBaUM3WDh2SXdOemc6MA#gid=0

[12] Демо проект с кодом: https://docs.google.com/spreadsheet/ccc?key=0AhAIFsd0zejDdEpBYjBaemJjNTBBaUM3WDh2SXdOemc

[13] Документация Google Apps Script: https://developers.google.com/apps-script/

[14] Редакторе Блогов: http://www.softcoder.ru/blogeditor/