user2199948
user2199948

Reputation: 3

How do you get the selected listBox item as a String?

I have been trying to build a small app that takes the selected item from a listBox and appends it to the filename of a file that will be uploaded. I can display everything correctly, and the file gets uploaded, but the value that should be appended to the filename is 'undefined'. Here is a sample:

 function doGet(e) {

 var app = UiApp.createApplication().setTitle("Upload CSV to Sheet");

 var panel = app.createVerticalPanel();
 var listBox = app.createListBox().setName('myList').setId('myList').setWidth('80px');
 listBox.addItem('Value1');
 listBox.addItem('Value2');
 listBox.addItem('Value3');
 listBox.addItem('Value4');

 panel.add(listBox);
 app.add(panel);

   var formContent = app.createVerticalPanel();
   formContent.add(app.createFileUpload().setName('thefile'));
   formContent.add(app.createSubmitButton('Submit'));
   var form = app.createFormPanel();
   form.add(formContent);
   app.add(form);
   return app;
 }

function doPost(e) {
var fileBlob = e.parameter.thefile;
var app = UiApp.getActiveApplication();
   var doc = DocsList.createFile(fileBlob).rename(e.parameter.myList+Utilities.formatDate(new Date(), "GMT", "MM-dd-yy"));
   return app;
 }

How can I get the name of the file to take the value from the listBox?

Upvotes: 0

Views: 817

Answers (1)

Serge insas
Serge insas

Reputation: 46802

You added the listBox to the app instead of adding it to the formpanel content. This has 2 consequences :

1 - the list stays visible after submitting

2 - the list is not received by the doPost since it is not in the form...

Try it like this :

function doGet() {

 var app = UiApp.createApplication().setTitle("Upload CSV to Sheet");

 var panel = app.createVerticalPanel();
 var listBox = app.createListBox().setName('myList').setId('myList').setWidth('80px');
 listBox.addItem('Value1');
 listBox.addItem('Value2');
 listBox.addItem('Value3');
 listBox.addItem('Value4');

 panel.add(listBox);

   var formContent = app.createVerticalPanel();
   formContent.add(app.createFileUpload().setName('thefile'));
   formContent.add(app.createSubmitButton('Submit'));
   formContent.add(panel);
   var form = app.createFormPanel();
   form.add(formContent);
   app.add(form);
   return app;
 }

function doPost(e) {
  var fileBlob = e.parameter.thefile;
  var doc = DocsList.createFile(fileBlob).rename(e.parameter.myList+' '+Utilities.formatDate(new Date(), "GMT", "MM-dd-yy"));
  var app = UiApp.getActiveApplication();
  return app;
 }

Upvotes: 2

Related Questions