的doPost方法和功能的doGet 5月的問題是,你只能有一個doGet和最多每個項目一個doPost方法。這是因爲這些功能使用共享資源,因此這種功能在一個項目的功能中共享。
實際上有兩個解決方法(至少我知道並且只測試了其中兩個)使用多個doPost查詢,這些查詢在一個單個項目中執行不同的操作。
最簡單的方法(也是最好的)是在單個doPost函數中使用不同的函數,每個函數需要一個doPost函數。 這裏的訣竅是,您需要在表單中添加一個隱藏字段,以幫助您區分項目中的不同表單。
然後,您可以添加一個「if()else if()else」塊來根據隱藏字段的值選擇正確的函數。
例如,如果你有兩個功能,你可以這樣做:
function doGet(e){
var app=UiApp.createApplication();
some stuff;
return app;
}
function doPost(e){
some stuff
if(e.parameter.form=="value1"){
function1(e,otherParameters);
}
else if(e.parameter.form=="value2"){
function2(e,otherParameters);
}
else{
}
some other stuff
}
function function1(e,otherParameters){
var app=UiApp.getActiveApplication();
var panel=app.createVerticalPanel();
var formPanel=app.createFormPanel();
var button=app.createSubmitButton();
var formHidden=app.createHidden().setName("form");
other widgets;
panel.add(formHidden);
panel.add(other widgets);
panel.add(button);
formPanel.add(panel);
some stuff;
app.add(formPanel);
}
function function2(e,otherParameters){
var app=UiApp.getActiveApplication();
var panel=app.createVerticalPanel();
var formPanel=app.createFormPanel();
var button=app.createSubmitButton();
var formHidden=app.createHidden().setName("value2");
other widgets different from those in function1;
panel.add(formHidden);
panel.add(other widgets);
panel.add(button);
formPanel.add(panel);
some stuff different from what you have in function1;
app.add(formPanel);
}
你也可以創建另一個項目(例如Project2的),你有一個的doPost功能,部署此項目作爲一個Web應用程序。
這個想法是,你可以使用FormPanel的setAction(「url」)方法將信息從給定的表單發送到一些URL。 使用此方法,您可以將表單的內容發送到將處理您的查詢的網頁。因此,如果您將此方法的字符串值設置爲您的網絡應用程序的網址,則會將谷歌腳本表單的內容發送到此應用程序。這是這個應用程序將使用其doPost函數來處理查詢。
該選項開發起來有點困難,並且存在目前根本沒有從FileUpload處理Blob的缺點。
希望它會幫助你
乾杯
薩科