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();// I moved this line a bit to have Sheet available
- var row = e.parameter.row
- 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.
- var myDoc = DocumentApp.openById(myDocID);
- var copyBody = myDoc.getActiveSection();
- var Sheet = SpreadsheetApp.getActiveSpreadsheet();
- //Browser.msgBox(row);
- 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());
- }
- //var movefiletofolder = moveFileToFolder(fileId, targetFolderId)
- //movefiletofolder("myDocID" , "targetfolder")
- myDoc.saveAndClose();
- //var pdf = DocsList.getFileById(copyId).getAs("application/pdf");
- //MailApp.sendEmail(email_address, subject, body, {cc: carbonCopy, name: senderName, htmlBody: body, attachments: pdf});
- var app = UiApp.getActiveApplication();
- app.close();
- 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(3, 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);
- //look here for code about the listbox to show folders
- grid.setWidget(2, 0, app.createLabel('Folder:')); //makes the label "folder" next to the listbox
- var list = app.createListBox(); //defines what to do when i say list
- grid.setWidget(2, 1, list); //puts the listbox to the right of the label
- var folder = DocsList.getAllFolders()[0]; //defines that when i say "folder" it is supposed to get all folders
- for (var i = 0; i < folder.length; i++) {
- list.addItem(folder[i].getName(),folder[i].getId())
- }
- //this is the end of the code for the listbox showing folders
- // Create a vertical panel..
- var panel = app.createVerticalPanel();
- // ...and add the grid to the panel
- panel.add(grid);
- // Create a button and click handler; pass in the grid object as a callback element and the handler as a click handler
- // Identify the function b as the server click handler
- 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