【发布时间】:2014-03-22 16:19:17
【问题描述】:
我正在尝试创建一个表单,该表单将在多个文本框中保存多个 Google 日历事件,用户应该能够添加另一个文本框来保存另一个事件。在创建每个文本框时,其名称将从最后一个例如递增。 textbox1、textbox2 等。下面的代码显示了我到目前为止的代码,我似乎无法让它工作。任何建议将不胜感激。
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 noOfEvents = app.createTextBox().setName('noOfEvents').setValue(1).setWidth(30);
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(noOfEvents)
.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 numberOfEvents = app.getElementById("noOfEvents");
numberOfEvents++;
app.getElementById('noOfEvents').setValue(numberOfEvents);
var eventTitleLabel = app.createLabel('Event Title:');
var eventTitle = app.createTextBox().setName('eventTitle'+numberOfEvents).setWidth(200);
//the new textBox 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 app = UiApp.getActiveApplication();
try{
var numberOfEvents = Number(e.parameter.noOfEvents);
for (var i = 1; i < numberOfEvents; i++) {
var event = e.parameter[eventTitle+i];;
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;
}
}
【问题讨论】:
标签: javascript google-apps-script google-calendar-api