Продолжаем знакомиться с Google Script. Рассмотрим создание Standalone интерфейса.
В отличие от Spreadsheet Integrated для реализации Standalone UI нет необходимости использовать табличный документ. Достаточно создать скрипт и опубликовать его в качестве сервиса, после чего доступ к приложению можно получить посредством специально сформированного URL.
Заходим на Google Drive: Создать - Еще - Скрипт. Сразу открывается редактор скриптов.
Точкой входа Standalone UI является функция doGet(). Рисуем интерфейс.
Для отображения такого интерфейса в функцию doGet() необходимо добавить строку:
Возвращаемся в Код.gs, после чего добавляем функцию применения стилей CSS.
Публикуем: Публикация - Развернуть как веб-приложение - Выбираем уровень доступа - "Все, включая анонимных пользователей".
Запускаем с помощью URL... Easy peasy lemon squeezy :)
В отличие от Spreadsheet Integrated для реализации Standalone UI нет необходимости использовать табличный документ. Достаточно создать скрипт и опубликовать его в качестве сервиса, после чего доступ к приложению можно получить посредством специально сформированного URL.
Заходим на Google Drive: Создать - Еще - Скрипт. Сразу открывается редактор скриптов.
Точкой входа Standalone UI является функция doGet(). Рисуем интерфейс.
// точка входа
function doGet() {
var app = UiApp.createApplication().setTitle('Standalone UI');
var hPanel = app.createHorizontalPanel();
app.add(hPanel);
var btn1 = app.createButton('Все');
var btn2 = app.createButton('Свободные');
var btn3 = app.createButton('Используемые');
hPanel.add(btn1);
hPanel.add(btn2);
hPanel.add(btn3);
var vPanel = app.createVerticalPanel().setId('vPanel');
app.add(vPanel);
// на сервере
btn1.addClickHandler(app.createServerHandler('getAll').addCallbackElement(vPanel));
btn2.addClickHandler(app.createServerHandler('getFree').addCallbackElement(vPanel));
btn3.addClickHandler(app.createServerHandler('getUsed').addCallbackElement(vPanel));
// применяем CSS
applyCSS(btn1,_btn);
applyCSS(btn2,_btn);
applyCSS(btn3,_btn);
applyCSS(hPanel,_hp);
applyCSS(vPanel,_vp);
getAll();
return app;
}
Разукрасим интерфейс с помощью CSS, для чего добавим файл скрипта: Файл - Создать - Файл скрипта. Назовем файл CSS.gs.var _btn = {
"color":"white",
"font-weight":"bold",
"border-radius":"10px 10px 10px 10px",
"border":"4px solid white",
"width": "120px",
"height": "40px",
"padding":"5px",
"margin":"5px",
"background":"4169e1"
}
var _hp = {
"border-radius":"10px 10px 10px 10px",
"padding":"5px",
"margin":"10px 20px",
"background":"4169e1"
}
var _vp = {
"border-radius":"10px 10px 10px 10px",
"border":"4px solid 4169e1",
"width": "400px",
"height": "400px",
"padding":"5px",
"margin":"10px 20px",
"background":"ccccdd"
}
Нарисовать интерфейс можно также используя GUI Builder - WYSIWYG-инструмент для создания интерфейсов: Файл - Создать пользовательский интерфейс.Для отображения такого интерфейса в функцию doGet() необходимо добавить строку:
app.add(app.loadComponent('MyGui')); // имя сохраненного GUI
Оставим использование GUI Builder в качестве домашнего задания. Интерфейс уже нарисован вручную.Возвращаемся в Код.gs, после чего добавляем функцию применения стилей CSS.
function applyCSS(element, style){
for (var key in style){
element.setStyleAttribute(key, style[key]);
}
}
В качестве источника данных используем таблицу со списком IP-адресов, созданную в предыдущей статье.// извлекаем все IP-адреса
function getAll() {
var app = UiApp.getActiveApplication();
// получаем данные
var ss = SpreadsheetApp.openById('0AkYcK5KeNe1tdFJHY1pxS21KaTlsTUdVeF94RW83dlE').getSheets()[0];
var values = ss.getDataRange().getValues();
var vPanel = app.getElementById('vPanel');
vPanel.clear(); //очищаем панель
var grid = app.createGrid().setCellPadding(2);
for (var i = 0; i < values.length; i++)
grid.resize(i + 1, 2).setText(i, 0, values[i][0]).setText(i, 1, values[i][1]);
vPanel.add(grid);
return app;
}
//извлекаем свободные IP-адреса
function getFree() {
var app = UiApp.getActiveApplication();
// получаем данные
var ss = SpreadsheetApp.openById('0AkYcK5KeNe1tdFJHY1pxS21KaTlsTUdVeF94RW83dlE').getSheets()[0];
var values = ss.getDataRange().getValues();
var vPanel = app.getElementById('vPanel');
vPanel.clear(); //очищаем панель
var j = 1;
var grid = app.createGrid(j,1).setCellPadding(2).setText(0, 0, values[0][0]);
for (var i = 1; i < values.length; i++){
if (values[i][1].toString() == '') {
j += 1;
grid.resize(j, 1).setText(j - 1, 0, values[i][0]);
}
}
vPanel.add(grid);
return app;
}
// извлекаем используемые IP-адреса
function getUsed() {
var app = UiApp.getActiveApplication();
// получаем данные
var ss = SpreadsheetApp.openById('0AkYcK5KeNe1tdFJHY1pxS21KaTlsTUdVeF94RW83dlE').getSheets()[0];
var values = ss.getDataRange().getValues();
var vPanel = app.getElementById('vPanel');
vPanel.clear(); //очищаем панель
var j = 1;
var grid = app.createGrid(j,2).setCellPadding(2).setText(0, 0, values[0][0]).setText(0, 1, values[0][1]);
for (var i = 1; i < values.length; i++){
if (values[i][1].toString() != '') {
j += 1;
grid.resize(j, 2).setText(j - 1, 0, values[i][0]).setText(j - 1, 1, values[i][1]);
}
}
vPanel.add(grid);
return app;
}
Сохраняем версию приложения: Файл - Управление версиями - Сохранить новую - ОК.Публикуем: Публикация - Развернуть как веб-приложение - Выбираем уровень доступа - "Все, включая анонимных пользователей".
Запускаем с помощью URL... Easy peasy lemon squeezy :)


Комментариев нет:
Отправить комментарий
Комментарий будет опубликован после модерации