Fast template generatorfunction generateDocument(e) { var template = DriveApp.getFileById(e.parameter.Templates); var row = e.parameter.row var myDocID = template.makeCopy(template.getName()+" - "+ row).getId(); 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()); } 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 folders = DriveApp.getFoldersByName("Templates"); while (folders.hasNext()) { var folder = folders.next(); var files = folder.getFilesByType(MimeType.GOOGLE_DOCS) while (files.hasNext()) { var file = files.next(); list.addItem(file.getName(),file.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); // 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: "Generate from template", functionName: "getTemplates"}]; ss.addMenu("Template Generator", menuEntries); } |