Skip to content

Commit 0621245

Browse files
committed
Simple GUI form for writing textbox input to a spreadsheet.
1 parent 117e0bf commit 0621245

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed

GuiToSpreadsheet.js

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
/*global SpreadsheetApp: false, UiApp: false */
2+
3+
// Close the current UI
4+
function exit() {
5+
"use strict";
6+
var ui = UiApp.getActiveApplication();
7+
return ui.close();
8+
}
9+
10+
// Callback action for button labelled "Add Row"
11+
// Take the values from two text boxes in the active GUI and
12+
// add them as rows to the active sheet.
13+
// Prepare for next input by:
14+
// re-setting the text boxes to empty strings
15+
// Set the focus to the first text box
16+
function addRow(e) {
17+
"use strict";
18+
var ui = UiApp.getActiveApplication(),
19+
sheet = SpreadsheetApp.getActiveSheet(),
20+
name = e.parameter.txtName_Name,
21+
email = e.parameter.txtEmail_Name,
22+
txtName = ui.getElementById('txtName_Id'),
23+
txtEmail = ui.getElementById('txtEmail_Id');
24+
sheet.appendRow([name, email]);
25+
txtName.setValue('');
26+
txtEmail.setValue('');
27+
txtName.setFocus(true);
28+
return ui;
29+
}
30+
31+
// Build a GUI with two labels, two text boxes and two buttons.
32+
function guiDemo() {
33+
"use strict";
34+
var ui = UiApp.createApplication(),
35+
ss = SpreadsheetApp.getActiveSpreadsheet(),
36+
uiTitle = 'Add Row To Spreadsheet',
37+
panelInput = ui.createVerticalPanel(),
38+
panelName = ui.createHorizontalPanel(),
39+
panelEmail = ui.createHorizontalPanel(),
40+
panelButtons = ui.createHorizontalPanel(),
41+
lblName = ui.createLabel('Name:'),
42+
lblEmail = ui.createLabel('Email:'),
43+
txtName = ui.createTextBox(),
44+
txtEmail = ui.createTextBox(),
45+
btnAddRow = ui.createButton('Add Row'),
46+
btnExit = ui.createButton('Exit'),
47+
exitHandler = ui.createServerHandler('exit'),
48+
addRowHandler = ui.createServerHandler('addRow');
49+
panelName.add(lblName);
50+
panelName.add(txtName);
51+
panelEmail.add(lblEmail);
52+
panelEmail.add(txtEmail);
53+
panelInput.add(panelName);
54+
panelInput.add(panelEmail);
55+
panelButtons.add(btnAddRow);
56+
panelButtons.add(btnExit);
57+
panelInput.add(panelButtons);
58+
ui.add(panelInput);
59+
ui.setWidth(200);
60+
ui.setHeight(100);
61+
btnExit.setWidth(80);
62+
btnExit.addClickHandler(exitHandler);
63+
btnAddRow.setWidth(80);
64+
btnAddRow.addClickHandler(addRowHandler);
65+
addRowHandler.addCallbackElement(txtName);
66+
addRowHandler.addCallbackElement(txtEmail);
67+
txtName.setName('txtName_Name');
68+
txtEmail.setName('txtEmail_Name');
69+
txtName.setId('txtName_Id');
70+
txtEmail.setId('txtEmail_Id');
71+
ui.setTitle(uiTitle);
72+
txtName.setFocus(true);
73+
ss.show(ui);
74+
}

0 commit comments

Comments
 (0)