Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- 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;i<Sheet.getLastColumn()+1;i++){
- var myCell = myRow.getCell(1, i);
- copyBody.replaceText("{"+myCell.getA1Notation().replace(row,"")+"}", myCell.getValue());
- }
- myDoc.saveAndClose();
- //var pdf = DocsList.getFileById(myDocID).getAs("application/pdf");
- var app = UiApp.getActiveApplication();
- app.close();
- return app;
- }
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function doGet(){
- var app = UiApp.createApplication();
- 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 list = app.createListBox().setName('list').setId('list').addItem('please select a folder','x');
- var grid = app.createGrid(3,2).setText(0,0,'Choose a folder in your drive').setWidget(0,1,curFN).setWidget(2,1,curFID).setWidget(1,1,list);
- 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);
- app.add(grid);
- return app;
- }
- function folderSelect(e){
- var app = UiApp.getActiveApplication();
- var currentFN = e.parameter.curFN;
- var currentFID = e.parameter.list;
- Logger.log(currentFID);
- var list = app.getElementById('list');
- 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);
- 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);
- }
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement