如何在 UI 应用程序中生成多个下拉列表框
How do you generate multiple dropdown list boxes in UI App
我一直在使用示例代码,以允许用户以谷歌表单提交照片以更新到谷歌电子表格。我正在使用Serge Insas的原始代码,我能够完全按照他的意图工作。现在我正在尝试使用它以满足我的需求,这只是拥有多个下拉列表,我需要捕获比原始代码允许的信息更多的信息。我对此很陌生,并且通过反复试验来做大多数事情。我可以让表单显示两个列表框,但它们的下拉列表是相同的(List1)
这是我修改的代码,它将发布在第二个列表框中选择的内容,但我需要显示 list2 中的项目。任何帮助将不胜感激。
谢谢
var submissionSSKey = '0ArbqJejC7zBydGNUbVpwd2hrQ3RFY3VxZ0RCeU5aV3c';
var docurl = 'https://docs.google.com/document/d/13FWMTtzprlhN73cMp73zPtunsOcoAFO5PCROp1PHiv4/'
var listitems = ['Select a category', 'LKQ', 'AM', 'OEM']
var listitems2 = ['Select a category', 'Wrong Part', 'Poor Fit', 'Poor Quality']
var Panelstyle = {
'background': '#dddddd',
'padding': '40px',
'borderStyle': 'solid',
'borderWidth': '10PX',
'borderColor': '#bbbbbb'
}
function doGet() {
var app = UiApp.createApplication().setTitle('Parts Return Reasons').setStyleAttribute('padding', '50PX');
var panel = app.createFormPanel().setStyleAttributes(Panelstyle).setPixelSize(400, 200);
var title = app.createHTML('<B>PartsReturnReasons</B>').setStyleAttribute('color', 'grey').setStyleAttribute('fontSize', '25PX');
var grid = app.createGrid(7, 2).setId('grid');
var list1 = app.createListBox().setName('list1').setWidth('130');
for (var i in listitems) {
list1.addItem(listitems[i])
}
var list2 = app.createListBox().setName('list2').setWidth('130');
for (var i in listitems2) {
list2.addItem(listitems[i])
}
var Textbox1 = app.createTextBox().setWidth('150px').setName('TB1');
var email = app.createTextBox().setWidth('150px').setName('mail');
var upLoad = app.createFileUpload().setName('uploadedFile');
var submitButton = app.createSubmitButton('<B>Submit</B>');
var warning = app.createHTML('Please fill in all fields').setStyleAttribute('background', '#bbbbbb').setStyleAttribute('fontSize', '18px');
//file upload
var cliHandler2 = app.createClientHandler()
.validateLength(Textbox1, 1, 40).validateNotMatches(list1, 'Select a category').validateEmail(email).validateNotMatches(upLoad, 'FileUpload')
.forTargets(submitButton).setEnabled(true)
.forTargets(warning).setHTML('Now you can submit your form').setStyleAttribute('background', '#99FF99').setStyleAttribute('fontSize', '12px');
//Grid layout of items on form
grid.setWidget(0, 1, title)
.setText(1, 0, 'Category')
.setWidget(1, 1, list1.addClickHandler(cliHandler2))
.setText(2, 0, 'Reason')
.setWidget(2, 1, list2.addClickHandler(cliHandler2))
.setText(3, 0, 'Name')
.setWidget(3, 1, Textbox1.addClickHandler(cliHandler2))
.setText(4, 0, 'Email')
.setWidget(4, 1, email)
.setText(5, 0, 'Image File')
.setWidget(5, 1, upLoad.addChangeHandler(cliHandler2))
.setWidget(6, 0, submitButton)
.setWidget(6, 1, warning);
var cliHandler = app.createClientHandler().forTargets(warning).setHTML('<B>PLEASE WAIT WHILE THE FILE IS UPLOADING<B>').setStyleAttribute('background', 'yellow');
submitButton.addClickHandler(cliHandler).setEnabled(false);
panel.add(grid);
app.add(panel);
return app;
}
function doPost(e) {
var app = UiApp.getActiveApplication();
var ListVal1 = e.parameter.list1;
var ListVal2 = e.parameter.list2;
var textVal = e.parameter.TB1;
var Email = e.parameter.mail;
var fileBlob = e.parameter.uploadedFile;
var blob = fileBlob.setContentTypeFromExtension()
var img = DocsList.createFile(blob);
try {
var folder = DocsList.getFolder('photos');
} catch (e) {
DocsList.createFolder('photos');
var folder = DocsList.getFolder('photos')
}
img.addToFolder(folder);
img.removeFromFolder(DocsList.getRootFolder());
var weight = parseInt(img.getSize() / 1000);
var sheet = SpreadsheetApp.openById(submissionSSKey).getSheetByName('Sheet1');
var lastRow = sheet.getLastRow();
var targetRange = sheet.getRange(lastRow + 1, 1, 1, 5).setValues([
[ListVal1, ListVal2, textVal, Email, "https://drive.google.com/uc?export=view&id=" + img.getId()]
]);
var imageInsert = sheet.getRange(lastRow + 1, 5).setFormula('=image("https://drive.google.com/uc?export=view&id=' + img.getId() + '")');
sheet.setRowHeight(lastRow + 1, 80);
var GDoc = DocumentApp.openByUrl(docurl)
GDoc.appendTable([
['Category : ' + ListVal1, ListVal2, 'Name : ' + textVal, 'Email : ' + Email]
])
var inlineI = GDoc.appendImage(img);
var width = inlineI.getWidth();
var newW = width;
var height = inlineI.getHeight();
var newH = height;
var ratio = width / height;
Logger.log('w=' + width + 'h=' + height + ' ratio=' + ratio);
if (width > 640) {
newW = 640;
newH = parseInt(newW / ratio);
}
inlineI.setWidth(newW).setHeight(newH)
GDoc.appendParagraph('IMAGE size : ' + width + ' x ' + height + ' (eventually) resized to ' + newW + ' x ' + newH + ' for PREVIEW (' + weight + ' kB) ');
GDoc.appendHorizontalRule();
GDoc.saveAndClose();
app.add(app.createLabel('Thank you for submitting'));
return app;
}
你在代码中犯了一个简单的错别字。
for (var i in listitems2) { list2.addItem(listitems2[i])
您必须在正确的源数组中获取列表项
相关文章:
- 语义ui如何使用javascript启用或禁用下拉列表
- 剑道UI下拉列表在剑道窗口内不起作用
- 下拉列表选择的值在UI淘汰js中没有更新
- Kendo Grid UI水印列或一列的两个下拉列表
- 设置值时,语义UI下拉列表滞后于整个UI
- jQuery ui自动完成下拉列表中的两个字段
- 如何将所选项目从角度 UI 下拉列表发送回角度控制器
- 如何在 UI 应用程序中生成多个下拉列表框
- 剑道UI如何将下拉列表列表更改为文本字段
- 语义 UI 下拉列表所选文本和值似乎很奇怪
- 使剑道 UI 下拉列表将“选择控件”的“标题”属性显示为剑道工具提示
- AngularJS ui-select - 不选择下拉列表中的选项
- 单元格值未在使用自定义下拉列表编辑器的剑道 UI 网格中正确显示
- 剑道UI [下拉列表] - 多个元素中的冲突
- 语义 UI 下拉列表不起作用
- 角度 UI 类型提前 - 防止在选择时关闭下拉列表
- 有没有办法在角度UI选择的下拉列表中的第n项之后创建分隔符
- 剑道 UI Web 网格 - Popup_Editor模板 - 下拉列表
- 具有角度未清除选定值的语义 UI 下拉列表
- 带有下拉列表的剑道 UI 网格