jasny przykład korzystania z Kreatora interfejsu użytkownika Google i skryptu aplikacji

Szukałem wszędzie i nie mogę znaleźć jasnego przykładu, jak używać Googles UI Builder i skryptu aplikacji. Nie mam pojęcia, czego brakuje. Myślę, że powinno to być proste: v / YES, przeczytałem wszystkie dokumenty Googles, oglądałem filmy itp. - kilka razy - nie ma kombinacji GUIB(Google UI Builder) oraz funkcję obsługi wywołania zwrotnego, którą mogę znaleźć.
EDYCJA: istnieją przykłady arkuszy kalkulacyjnych - nie GSites

Co muszę zrobić:
Chciałbym umieścić pole tekstowe i przycisk, aby zebrać szukaną frazę od użytkownika na stronie witryny Google. Zbudowałem bardzo prosty interfejs użytkownika z pojedynczym panelem przepływu, polem tekstowym i przyciskiem, ale zawsze mogę otrzymać „Niezdefiniowany” zwrócony z Logger.log () bez względu na to, co zrobię(patrz kod poniżej).

Trochę wściekłości:
Bardzo ostrożnie nazwałam i dzwoniłam pod odpowiednimi nazwami. Próbowałem użyć panelu Form, ale w GUIB, możesz umieścić w nim JEDEN widżet ?! ... ORAZ przycisk zgłaszania przejdzie tylko do panelu formuły - huh - nie mogę też umieścić mojego pola tekstowego !?(Po co więc zawracać sobie głowę formpanelem - tego nie rozumiem! ... tak, wiem, że doPost () jest automatycznie wywoływany na submit). Chcę, aby widżety pozostały aktywne i nie znikały po jednym użyciu, więc może formpanel / submitbutton i tak nie zadziała - czy nie jest to właściwy sposób?

Do biznesu:
W każdym razie próbowałem umieścić zwykły przycisk i pole tekstowe w panelu przepływu z następującym kodem ...
EDYTUJ: Usunąłem tutaj oryginalną treść i opublikowałem tę sekcję ...

// Google Sites and UIBuilder (GUIB) - kgingeri (Karl)
// - this script is embedded in a GSite page via: Insert -> Apps Script Gadget.
//
// Withing GUIB I have defined:
// - a FlowPanel named 'pnlMain'
// - inside that a textBox named 'tbxQuery' and a button called 'btnSearch'
// - for btnSearch, I have defined (in the Events subsection) a callback function
//   btnSearchHandler (see it below doGet() here.  I expanded the [+] beside that
//   and entered 'tbxQuery'    
//
// the GUIB compnent tree looks like this...
//
//  [-] testGui
//    [-] pnlMain
//          btnSearch
//          tbxQuery
//
// btnSearch Event section looks something like this...
//
// Events
//  On Mouse Clicks
//  [X][btnSearchHandler][-]
//  [tbxQuery         ]<--'
//  [Add Server]
//  ...
//
// So... 
// 1) when the page is opened, the doGet() function is called, showing the defined UI 
// 2) when text is entered into the textBox and the button is clicked
// 3) the data from tbxQuery is **SUPPOSED TO BE** returned as e.parameter.tbxQuery
//    in the function 'btnSearchHandler(e)' **BUT IS NOT**  :v(
//
// (this functionality appears to work in a spreadsheet?! - weird?!)

//
//    [ predefined function --- Google calls on page open ]
//
// ...this works 'as advertised' ;v)
//
function doGet(e) {
  var app = UiApp.createApplication();
  app.add(app.loadComponent("testGui"));  // ...the title that shows in G/UIBuilder
  return app;
}

//
//    [ callBack for when a button is clicked ]
//
// ...I always get 'Resp: [Undefined]' returned in the View -> Logs menu?!
// ...I also tried to put 'pnlMain' in the Event [+] param, no go :v(
//
function btnSearchHandler(e) {
  var resp = e.parameter.tbxQuery  // ...the data I want in the textBox widget
  Logger.log('Resp: [' + e.parameter.tbxQuery + ']');
  // ...more code to come, once this works!
}

Próbowałem też dodać kod do ręcznego ustawiania programów obsługi itp. W doGet () i nie używać ustawień zdarzeń GUIB, ale bezskutecznie.

Wniosek?
Co daje? Czy muszę ręcznie kodować GUI i nie używać GUIB? Wiem, że tym razem jest to proste, ale jeśli uda mi się uzyskać tę pracę, z pewnością będę o wiele ładniejszy w tworzeniu innych aplikacji za pomocą GUIB! Czy ktoś może mi dać lub wskazać na wyraźny przykład ?!

Dziękuje za przeczytanie!

questionAnswers(2)

yourAnswerToTheQuestion