//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function generateDocument(e) { var template = DocsList.getFileById(e.parameter.Templates); var Sheet = SpreadsheetApp.getActiveSpreadsheet(); var row = e.parameter.row var myDocID = template.makeCopy(Sheet.getRange('B'+row).getValue()+' - '+Sheet.getRange('E'+row).getValue()+' - '+Sheet.getRange('D'+row).getValue()+' - '+Sheet.getRange('X'+row).getValue()).getId(); var myDoc = DocumentApp.openById(myDocID); var copyBody = myDoc.getActiveSection(); var Sheet = SpreadsheetApp.getActiveSpreadsheet(); var myRow = SpreadsheetApp.getActiveSpreadsheet().getRange(row+":"+row); for (var i=1;i0){list.clear(); list.addItem('please select a subFolder','x')}; for (var i = 0; i < folders.length; i++) { list.addItem(folders[i].getName(),folders[i].getId()) } curFN.setText(currentFN+DocsList.getFolderById(currentFID).getName()+'/'); if(currentFID==DocsList.getRootFolder().getId()){curFN.setText('MyDrive/')}; curFID.setText(currentFID); return app; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function getTemplates() { var doc = SpreadsheetApp.getActiveSpreadsheet(); var app = UiApp.createApplication().setTitle('Generate from template'); // Create a grid with 3 text boxes and corresponding labels var grid = app.createGrid(5, 2); grid.setWidget(0, 0, app.createLabel('Template name:')); var list = app.createListBox(); list.setName('Templates'); grid.setWidget(0, 1, list); var docs = DocsList.getFolder("Templates").getFilesByType("document"); for (var i = 0; i < docs.length; i++) { list.addItem(docs[i].getName(),docs[i].getId()); } grid.setWidget(1, 0, app.createLabel('Row:')); var row = app.createTextBox().setName('row'); row.setValue(SpreadsheetApp.getActiveSpreadsheet().getActiveRange().getRow()); grid.setWidget(1, 1, row); ///////////////////////////////This is what i am trying to implement into my UI////////////////////////////////////////////// var curFN = app.createTextBox().setText('MyDrive/').setName('curFN').setId('curFN').setWidth('400'); //var curFID = app.createTextBox().setText('x').setName('curFID').setId('curFID').setWidth('400'); var listFolder = app.createListBox().setName('list').setId('list').addItem('please select a folder','x'); grid.setWidget(2, 0, app.createLabel('Choose Folder:')); grid.setWidget(2, 1, listFolder); var folders = DocsList.getRootFolder().getFolders(); for (var i = 0; i < folders.length; i++) { list.addItem(folders[i].getName(),folders[i].getId()) } var handler = app.createServerHandler('folderSelect').addCallbackElement(grid); list.addChangeHandler(handler); var currentFN = e.parameter.curFN; var currentFID = e.parameter.list; //Logger.log(currentFID); var listFolder = app.getElementById('listFolder'); var curFN = app.getElementById('curFN'); //var curFID = app.getElementById('curFID'); //if(currentFID=='x'){currentFID=DocsList.getRootFolder().getId() ; curFN.setText('MyDrive/')}; var startFolder = DocsList.getFolderById(currentFID); var folders = startFolder.getFolders(); list.clear().addItem('no other subFolder','x').addItem('Go back to Root','x'); if(folders.length>0){list.clear(); list.addItem('please select a subFolder','x')}; for (var i = 0; i < folders.length; i++) { list.addItem(folders[i].getName(),folders[i].getId()) } curFN.setText(currentFN+DocsList.getFolderById(currentFID).getName()+'/'); if(currentFID==DocsList.getRootFolder().getId()){curFN.setText('MyDrive/')}; curFID.setText(currentFID); ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// var panel = app.createVerticalPanel(); panel.add(grid); var button = app.createButton('Submit'); var handler = app.createServerClickHandler('generateDocument'); handler.addCallbackElement(grid); button.addClickHandler(handler); // Add the button to the panel and the panel to the application, then display the application app in the Spreadsheet doc panel.add(button); app.add(panel); doc.show(app); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function onOpen() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var menuEntries = [{name: "Export Row to Document", functionName: "getTemplates"}]; ss.addMenu("Generate Documents Here!", menuEntries); } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////