Advertisement
Guest User

Doc Generator to export Spreadsheet rows to documents

a guest
Aug 8th, 2013
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function generateDocument(e) {
  2.   var template = DocsList.getFileById(e.parameter.Templates);
  3.   var Sheet = SpreadsheetApp.getActiveSpreadsheet();// I moved this line a bit to have Sheet available
  4.   var row = e.parameter.row
  5.   var myDocID = template.makeCopy(Sheet.getRange('B'+row).getValue()+' - '+Sheet.getRange('E'+row).getValue()+' - '+Sheet.getRange('C'+row).getValue()).getId();// this is a basic implementation to compose the name with content of column D and E separated by a hyphen... customize it the way you want.
  6.   var myDoc = DocumentApp.openById(myDocID);
  7.   var copyBody = myDoc.getActiveSection();
  8.   var Sheet = SpreadsheetApp.getActiveSpreadsheet();
  9.   //Browser.msgBox(row);
  10.   var myRow = SpreadsheetApp.getActiveSpreadsheet().getRange(row+":"+row);
  11.   for (var i=1;i<Sheet.getLastColumn()+1;i++){
  12.     var myCell = myRow.getCell(1, i);
  13.     copyBody.replaceText("{"+myCell.getA1Notation().replace(row,"")+"}", myCell.getValue());
  14.   }
  15.   //var movefiletofolder = moveFileToFolder(fileId, targetFolderId)
  16.   //movefiletofolder("myDocID" , "targetfolder")
  17.   myDoc.saveAndClose();
  18.   //var pdf = DocsList.getFileById(copyId).getAs("application/pdf");
  19.   //MailApp.sendEmail(email_address, subject, body, {cc: carbonCopy, name: senderName, htmlBody: body, attachments: pdf});
  20.  
  21.   var app = UiApp.getActiveApplication();
  22.   app.close();
  23.   return app;
  24. }
  25.  
  26. function getTemplates() {
  27.   var doc = SpreadsheetApp.getActiveSpreadsheet();
  28.   var app = UiApp.createApplication().setTitle('Generate from template');
  29.   // Create a grid with 3 text boxes and corresponding labels
  30.   var grid = app.createGrid(3, 2);
  31.   grid.setWidget(0, 0, app.createLabel('Template name:'));
  32.  
  33.   var list = app.createListBox();
  34.   list.setName('Templates');
  35.   grid.setWidget(0, 1, list);
  36.   var docs = DocsList.getFolder("Templates").getFilesByType("document");
  37.   for (var i = 0; i < docs.length; i++) {
  38.     list.addItem(docs[i].getName(),docs[i].getId());
  39.   }
  40.  
  41.   grid.setWidget(1, 0, app.createLabel('Row:'));
  42.   var row = app.createTextBox().setName('row');
  43.   row.setValue(SpreadsheetApp.getActiveSpreadsheet().getActiveRange().getRow());
  44.   grid.setWidget(1, 1, row);
  45. //look here for code about the listbox to show folders
  46.   grid.setWidget(2, 0, app.createLabel('Folder:')); //makes the label "folder" next to the listbox
  47.   var list = app.createListBox(); //defines what to do when i say list
  48.   grid.setWidget(2, 1, list); //puts the listbox to the right of the label
  49.  
  50.   var folder = DocsList.getAllFolders()[0]; //defines that when i say "folder" it is supposed to get all folders
  51.   for (var i = 0; i < folder.length; i++) {
  52.     list.addItem(folder[i].getName(),folder[i].getId())
  53.   }
  54.   //this is the end of the code for the listbox showing folders
  55.  
  56.   // Create a vertical panel..
  57.   var panel = app.createVerticalPanel();
  58.  
  59.   // ...and add the grid to the panel
  60.   panel.add(grid);
  61.  
  62.   // Create a button and click handler; pass in the grid object as a callback element and the handler as a click handler
  63.   // Identify the function b as the server click handler
  64.  
  65.   var button = app.createButton('Submit');
  66.   var handler = app.createServerClickHandler('generateDocument');
  67.   handler.addCallbackElement(grid);
  68.   button.addClickHandler(handler);
  69.  
  70.   // Add the button to the panel and the panel to the application, then display the application app in the Spreadsheet doc
  71.   panel.add(button);
  72.   app.add(panel);
  73.   doc.show(app);
  74. }
  75.  
  76. function onOpen() {  
  77.   var ss = SpreadsheetApp.getActiveSpreadsheet();
  78.   var menuEntries = [{name: "Export Row to Document", functionName: "getTemplates"}];  
  79.   ss.addMenu("Generate Documents Here!", menuEntries);  
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement