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!