[英]How do I store multiple text boxes?
我正在Google App腳本中創建一個表單以一次創建多個事件,我有一些方法可以創建另一個事件文本框,然后將其添加到面板中,但是我不知道如何創建多個事件。 我應該如何存儲多個文本框,以便可以在每個文本框上調用createEvent()?
function doGet(){
var app = UiApp.createApplication().setTitle('QuickAdd Events');
//Create a penel which holds all the form elelemnts
var parent = app.createHorizontalPanel().setId('parent');
var left = app.createVerticalPanel().setId('left').setWidth(200);
var right = app.createVerticalPanel().setId('right');
var eventTitleLabel = app.createLabel('Event Title:');
var eventTitle = app.createTextBox().setName('eventTitle').setWidth(200);
var eventButton = app.createButton('Create Events');
var childButton = app.createButton('+ Event');
left.add(eventTitleLabel)
.add(eventTitle);
right.add(eventButton)
.add(childButton);
var eventHandler = app.createServerClickHandler('createEvents');
eventHandler.addCallbackElement(left);
eventButton.addClickHandler(eventHandler);
var panelHandler = app.createServerClickHandler('createAnotherEvent');
panelHandler.addCallbackElement(left);
childButton.addClickHandler(panelHandler);
parent.add(left)
.add(right);
app.add(parent);
app.close();
return app;
}
function createAnotherEvent(e){
var app = UiApp.getActiveApplication();
var eventTitleLabel = app.createLabel('Event Title:');
var eventTitle = app.createTextBox().setName('eventTitle').setWidth(200);
app.getElementById('left').add(eventTitleLabel)
.add(eventTitle);
return app;
}
function createEvents(e){
var app = UiApp.getActiveApplication();
try{
//get the entries;
var event = e.parameter.eventTitle;
var cal = CalendarApp.getDefaultCalendar();
cal.createEventFromDescription(event);
app.add(app.createLabel('Event created Successfully'));
//make the form panel invisible
app.getElementById('parent').setVisible(false);
return app;
}
//If an error occurs, show it on the panel
catch(e){
app.add(app.createLabel('Error occured: '+e));
return app;
}
}
我玩了一些您的代碼,但是由於我不確定您到底想做什么,所以我不確定它會不會幫助您...
至少它顯示了如何知道按下了哪個按鈕,如何在循環中創建小部件並為其分配名稱和ID ...但是我承認整件事有點混亂;-)
隨時銷毀您不需要的東西。
function doGet(){
var app = UiApp.createApplication().setTitle('QuickAdd Events');
var label = ['label title1','label title2','label title3','label title4']
var title = ['title1','title2','title3','title4']
//Create a penel which holds all the form elelemnts
var parent = app.createHorizontalPanel().setId('parent');
var left = app.createVerticalPanel().setId('left').setWidth(200);
var right = app.createVerticalPanel().setId('right');
var eventHandler = app.createServerClickHandler('createEvents');
eventHandler.addCallbackElement(left);
var panelHandler = app.createServerClickHandler('createAnotherEvent');
panelHandler.addCallbackElement(left);
for(var n in label){
var eventTitleLabel = app.createLabel(label[n]);
var eventTitle = app.createTextBox().setName(title[n]).setWidth(200);
var eventButton = app.createButton('Create Events').setId('event'+n);
var childButton = app.createButton('+ Event').setId('ch'+n);
left.add(eventTitleLabel)
.add(eventTitle);
right.add(eventButton)
.add(childButton);
eventButton.addClickHandler(eventHandler);
childButton.addClickHandler(panelHandler);
}
parent.add(left)
.add(right);
var hidden = app.createHidden('numberOfTitles').setId('numberOfTitles').setValue(n);// the number of events
left.add(hidden);
app.add(parent);
app.close();
return app;
}
function createAnotherEvent(e){
var app = UiApp.getActiveApplication();
var source = Number(e.parameter.source.replace(/\D/g,''));// the event number from the button pressed
var numberOfTitles = Number(e.parameter.numberOfTitles);
numberOfTitles++
app.getElementById('numberOfTitles').setValue(numberOfTitles);
var eventTitleLabel = app.createLabel('Event Title:');
var eventTitle = app.createTextBox().setName('eventTitle'+numberOfTitles).setWidth(200);// this way the new textBow has a new predictable name and you can easily get it in the handler
app.getElementById('left').add(eventTitleLabel)
.add(eventTitle);
return app;
}
function createEvents(e){
Logger.log(JSON.stringify(e));
var source = Number(e.parameter.source.replace(/\D/g,''));
var numberOfTitles = Number(e.parameter.numberOfTitles);
var app = UiApp.getActiveApplication();
try{
//get the entries;
var event = e.parameter.eventTitle;
var cal = CalendarApp.getDefaultCalendar();
cal.createEventFromDescription(event);
app.add(app.createLabel('Event created Successfully'));
//make the form panel invisible
app.getElementById('parent').setVisible(false);
return app;
}
//If an error occurs, show it on the panel
catch(e){
app.add(app.createLabel('Error occured: '+e));
return app;
}
}
編輯:您的腳本讓我想起了我前一段時間回答的舊帖子,在這里可能會引起您的關注: 存儲和檢索可乘小部件實例的標識符
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.