Недавно ко мне обратились с вопросом по Google Apps Script: как получить информацию из одного виджета и записать в другой. Настоящим постом хочу прояснить ситуацию с обработкой событий виджетов UI Service на сервере. По-моему следующий пример наглядно демонстрирует предмет, а исходный код с комментариями не требует дополнительных пояснений.
Для тех, кто в танке: пишем в верхнее поле, получаем данные в нижнее.
function doGet() {
var app = UiApp.createApplication();
var v = app.createVerticalPanel().setStyleAttribute('margin', '20px');
// обращаем внимание, что первому элементу присвоено имя - setName('t1'),
// а второму id - setId('t2')
var t1 = app.createTextArea().setName('t1').setWidth(300).setFocus(true);
var t2 = app.createTextArea().setId('t2').setWidth(300);
v.add(t1).add(t2); //добавляем виджеты на вертикальную панель
// создаем функцию-обработчик события
var handler = app.createServerHandler('onKeyUp');
// добавляем функцию обратного вызова, а в нее элемент - вертикальную панель,
// которая содержит интересующий нас элемент t1,
// можно было сразу добавить элемент t1
handler.addCallbackElement(v);
// добавляем элементу функцию-обработчик события нажатия на кнопку клавиатуры
t1.addKeyUpHandler(handler);
// можно было записать в одну строку:
//t1.addKeyUpHandler(app.createServerHandler('onKeyUp').addCallbackElement(v));
app.add(v);
return app;
}
function onKeyUp(e) {
var app = UiApp.getActiveApplication();
var t2 = app.getElementById('t2'); // здесь играет 'id'
t2.setText(e.parameter.t1); // здесь играет 'name'
return app;
}
Для тех, кто в танке: пишем в верхнее поле, получаем данные в нижнее.

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