Advertisement
Guest User

Exporter google script

a guest
Aug 9th, 2013
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2.  
  3. function generateDocument(e) {
  4.   var template = DocsList.getFileById(e.parameter.Templates);
  5.   var Sheet = SpreadsheetApp.getActiveSpreadsheet();
  6.   var row = e.parameter.row
  7.   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();
  8.   var myDoc = DocumentApp.openById(myDocID);
  9.   var copyBody = myDoc.getActiveSection();
  10.   var Sheet = SpreadsheetApp.getActiveSpreadsheet();
  11.   var myRow = SpreadsheetApp.getActiveSpreadsheet().getRange(row+":"+row);
  12.   for (var i=1;i<Sheet.getLastColumn()+1;i++){
  13.     var myCell = myRow.getCell(1, i);
  14.     copyBody.replaceText("{"+myCell.getA1Notation().replace(row,"")+"}", myCell.getValue());
  15.   }
  16.   myDoc.saveAndClose();
  17.   //var pdf = DocsList.getFileById(myDocID).getAs("application/pdf");
  18.   var app = UiApp.getActiveApplication();
  19.   app.close();
  20.   return app;
  21. }
  22.  
  23. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  24.  
  25. function doGet(){
  26.   var app = UiApp.createApplication();
  27.   var curFN = app.createTextBox().setText('MyDrive/').setName('curFN').setId('curFN').setWidth('400');
  28.   var curFID = app.createTextBox().setText('x').setName('curFID').setId('curFID').setWidth('400');
  29.   var list = app.createListBox().setName('list').setId('list').addItem('please select a folder','x');
  30.   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);
  31.   var folders = DocsList.getRootFolder().getFolders();
  32.   for (var i = 0; i < folders.length; i++) {
  33.     list.addItem(folders[i].getName(),folders[i].getId())
  34.   }
  35.   var handler = app.createServerHandler('folderSelect').addCallbackElement(grid);
  36.   list.addChangeHandler(handler);
  37.   app.add(grid);
  38.   return app;
  39. }
  40. function folderSelect(e){
  41.   var app = UiApp.getActiveApplication();
  42.   var currentFN = e.parameter.curFN;
  43.   var currentFID = e.parameter.list;
  44.   Logger.log(currentFID);
  45.   var list = app.getElementById('list');
  46.   var curFN = app.getElementById('curFN');
  47.   var curFID = app.getElementById('curFID');
  48.   if(currentFID=='x'){currentFID=DocsList.getRootFolder().getId() ; curFN.setText('MyDrive/')};
  49.   var startFolder = DocsList.getFolderById(currentFID);
  50.   var folders = startFolder.getFolders();
  51.   list.clear().addItem('no other subFolder','x').addItem('Go back to Root','x');
  52.   if(folders.length>0){list.clear(); list.addItem('please select a subFolder','x')};
  53.   for (var i = 0; i < folders.length; i++) {
  54.     list.addItem(folders[i].getName(),folders[i].getId())
  55.   }
  56.   curFN.setText(currentFN+DocsList.getFolderById(currentFID).getName()+'/');
  57.   if(currentFID==DocsList.getRootFolder().getId()){curFN.setText('MyDrive/')};
  58.   curFID.setText(currentFID);
  59.   return app;
  60. }
  61.  
  62. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  63.  
  64. function getTemplates() {
  65.   var doc = SpreadsheetApp.getActiveSpreadsheet();
  66.   var app = UiApp.createApplication().setTitle('Generate from template');
  67.   // Create a grid with 3 text boxes and corresponding labels
  68.   var grid = app.createGrid(5, 2);
  69.   grid.setWidget(0, 0, app.createLabel('Template name:'));
  70.   var list = app.createListBox();
  71.   list.setName('Templates');
  72.   grid.setWidget(0, 1, list);
  73.   var docs = DocsList.getFolder("Templates").getFilesByType("document");
  74.   for (var i = 0; i < docs.length; i++) {
  75.     list.addItem(docs[i].getName(),docs[i].getId());
  76.   }
  77.   grid.setWidget(1, 0, app.createLabel('Row:'));
  78.   var row = app.createTextBox().setName('row');
  79.   row.setValue(SpreadsheetApp.getActiveSpreadsheet().getActiveRange().getRow());
  80.   grid.setWidget(1, 1, row);
  81.  
  82. ///////////////////////////////This is what i am trying to implement into my UI//////////////////////////////////////////////
  83.   var curFN = app.createTextBox().setText('MyDrive/').setName('curFN').setId('curFN').setWidth('400');
  84.   //var curFID = app.createTextBox().setText('x').setName('curFID').setId('curFID').setWidth('400');
  85.   var listFolder = app.createListBox().setName('list').setId('list').addItem('please select a folder','x');
  86.   grid.setWidget(2, 0, app.createLabel('Choose Folder:'));
  87.   grid.setWidget(2, 1, listFolder);
  88.   var folders = DocsList.getRootFolder().getFolders();
  89.   for (var i = 0; i < folders.length; i++) {
  90.     list.addItem(folders[i].getName(),folders[i].getId())
  91.   }
  92.   var handler = app.createServerHandler('folderSelect').addCallbackElement(grid);
  93.   list.addChangeHandler(handler);
  94.  
  95.   var currentFN = e.parameter.curFN;
  96.   var currentFID = e.parameter.list;
  97.   //Logger.log(currentFID);
  98.   var listFolder = app.getElementById('listFolder');
  99.   var curFN = app.getElementById('curFN');
  100.   //var curFID = app.getElementById('curFID');
  101.   //if(currentFID=='x'){currentFID=DocsList.getRootFolder().getId() ; curFN.setText('MyDrive/')};
  102.   var startFolder = DocsList.getFolderById(currentFID);
  103.   var folders = startFolder.getFolders();
  104.   list.clear().addItem('no other subFolder','x').addItem('Go back to Root','x');
  105.   if(folders.length>0){list.clear(); list.addItem('please select a subFolder','x')};
  106.   for (var i = 0; i < folders.length; i++) {
  107.     list.addItem(folders[i].getName(),folders[i].getId())
  108.   }
  109.   curFN.setText(currentFN+DocsList.getFolderById(currentFID).getName()+'/');
  110.   if(currentFID==DocsList.getRootFolder().getId()){curFN.setText('MyDrive/')};
  111.   curFID.setText(currentFID);
  112.  
  113. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  114.  
  115.   var panel = app.createVerticalPanel();
  116.   panel.add(grid);
  117.   var button = app.createButton('Submit');
  118.   var handler = app.createServerClickHandler('generateDocument');
  119.   handler.addCallbackElement(grid);
  120.   button.addClickHandler(handler);
  121.  
  122.   // Add the button to the panel and the panel to the application, then display the application app in the Spreadsheet doc
  123.   panel.add(button);
  124.   app.add(panel);
  125.   doc.show(app);
  126. }
  127.  
  128. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  129.  
  130. function onOpen() {  
  131.   var ss = SpreadsheetApp.getActiveSpreadsheet();
  132.   var menuEntries = [{name: "Export Row to Document", functionName: "getTemplates"}];  
  133.   ss.addMenu("Generate Documents Here!", menuEntries);  
  134. }
  135.  
  136. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement