SHARE
TWEET
Untitled
a guest
Jan 29th, 2018
53
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
- function guardar() {
- var sheet = SpreadsheetApp.getActiveSpreadsheet();
- sheetName = sheet.getSheetName();
- // if(sheetName == 'Piédica")
- // else if (sheetName == "Sensor Medica")
- codigo = sheet.getRange("D12").getValue();
- idCliente = sheet.getRange("E16").getValue();
- nombreCliente = sheet.getRange("B17").getValue();
- fechaEnvio = sheet.getRange("B14").getValue();
- moneda = sheet.getRange("F12").getValue();
- cambio = sheet.getRange("F14").getValue();
- total = sheet.getRange("I47").getValue();
- carpetaClienteId = crearCarpetaCliente(nombreCliente);
- fileUrl = clonarSpreadsheet(sheet, carpetaClienteId, sheetName);
- agregarListaCotizaciones(sheet, sheetName, codigo, idCliente, nombreCliente, fechaEnvio, moneda, cambio, total, fileUrl);
- }
- function crearCarpetaCliente(nombreCliente) {
- if (nombreCliente == '')
- return false;
- carpetaCotizaciones = DriveApp.getFolderById(carpetaCotizacionesId);
- carpetaClienteNombre = nombreCliente;
- try {
- var carpetaCliente = carpetaCotizaciones.getFoldersByName(carpetaClienteNombre).next();
- }
- catch(e) {
- var carpetaCliente = carpetaCotizaciones.createFolder(carpetaClienteNombre);
- }
- return carpetaCliente.getId();
- }
- function clonarSpreadsheet(sheet, carpetaClienteId, sheetName) {
- var range = sheet.getRange('A1:I64');
- var data = range.getValues();
- var bgColors = range.getBackgrounds();
- var fontColors = range.getFontColors();
- var fontFamilies = range.getFontFamilies();
- var fontLines = range.getFontLines();
- var fontSizes = range.getFontSizes();
- var fontStyles = range.getFontStyles();
- var fontWeights = range.getFontWeights();
- var hAlignments = range.getHorizontalAlignments();
- var vAlignments = range.getVerticalAlignments();
- var mergedRanges = range.getMergedRanges();
- var wraps = range.getWraps();
- var now = new Date();
- formattedDate = Utilities.formatDate(now, "GMT-6", "dd-MM-yyyy HH:mm:ss");
- fileName = sheetName + ' - ' + formattedDate;
- tmpFileId = SpreadsheetApp.create(fileName).getId();
- newFileId = moveFiles(tmpFileId, carpetaClienteId);
- var newSs = SpreadsheetApp.openById(newFileId); //replace with destination ID
- var newSheet = newSs.getActiveSheet();
- newRange = newSheet.getRange('A1:I64');
- newRange.setValues(data);
- newRange.setBackgrounds(bgColors);
- newRange.setFontColors(fontColors);
- newRange.setFontFamilies(fontFamilies);
- newRange.setFontLines(fontLines);
- newRange.setFontSizes(fontSizes);
- newRange.setFontStyles(fontStyles);
- newRange.setFontWeights(fontWeights);
- newRange.setHorizontalAlignments(hAlignments);
- newRange.setVerticalAlignments(vAlignments);
- newRange.setWraps(wraps);
- //merged cells
- for (var i = 0; i < mergedRanges.length; i++) {
- tempRange = newSheet.getRange(mergedRanges[i].getA1Notation());
- tempRange.merge();
- tempRange.setValue(mergedRanges[i].getDisplayValue());
- }
- //Alto y ancho de celdas
- lastrow = range.getNumRows();
- lastcol = range.getNumColumns();
- for (var i = 1; i <= lastrow; i++) {
- newSheet.setRowHeight(i, sheet.getRowHeight(i));
- }
- for (var i = 1; i <= lastcol; i++) {
- newSheet.setColumnWidth(i, sheet.getColumnWidth(i));
- }
- //Quita salto de linea de textos
- newSheet.getRange('A1:I64').setWrap(false);
- //Lineas del documento
- newSheet.getRange('B9').setBorder(false, false, true, false, false, false, 'black', SpreadsheetApp.BorderStyle.SOLID_MEDIUM);
- newSheet.getRange('B15:I15').setBorder(false, false, true, false, false, false, 'black', SpreadsheetApp.BorderStyle.SOLID_MEDIUM);
- newSheet.getRange('B18:I18').setBorder(false, false, true, false, false, false, 'black', SpreadsheetApp.BorderStyle.SOLID_MEDIUM);
- newSheet.getRange('B30:I30').setBorder(false, false, true, false, false, false, 'black', SpreadsheetApp.BorderStyle.SOLID_MEDIUM);
- newSheet.getRange('B51:I51').setBorder(false, false, true, false, false, false, 'black', SpreadsheetApp.BorderStyle.SOLID_MEDIUM);
- newSheet.getRange('B54:I54').setBorder(false, false, true, false, false, false, 'black', SpreadsheetApp.BorderStyle.SOLID_MEDIUM);
- newSheet.getRange('B59:I59').setBorder(false, false, true, false, false, false, 'black', SpreadsheetApp.BorderStyle.SOLID_MEDIUM);
- newSheet.getRange('B63:I63').setBorder(false, false, true, false, false, false, 'black', SpreadsheetApp.BorderStyle.SOLID_MEDIUM);
- newSheet.getRange('B44:G47').setBorder(true, true, true, true, false, false, 'black', SpreadsheetApp.BorderStyle.SOLID_MEDIUM);
- newSheet.getRange('H44:I47').setBorder(true, true, true, true, false, false, 'black', SpreadsheetApp.BorderStyle.SOLID_MEDIUM);
- //Agrega logo
- if(sheetName == 'Piédica')
- link = 'https://i.imgur.com/Rhzpjbz.jpg'
- else if (sheetName == 'Sensor Medica')
- link = 'https://i.imgur.com/5kx7CE1.jpg';
- newSheet.insertImage(link, 8, 2);
- //Formatea moneda, para mostrar $ antes del monto
- newSheet.getRange('H21:I29').setNumberFormat("$ #,##0.00;$(#,##0.00)");
- newSheet.getRange('I30').setNumberFormat("$ #,##0.00;$(#,##0.00)");
- newSheet.getRange('H33:I41').setNumberFormat("$ #,##0.00;$(#,##0.00)");
- newSheet.getRange('I42').setNumberFormat("$ #,##0.00;$(#,##0.00)");
- newSheet.getRange('I44').setNumberFormat("$ #,##0.00;$(#,##0.00)");
- newSheet.getRange('I46').setNumberFormat("$ #,##0.00;$(#,##0.00)");
- newSheet.getRange('I47').setNumberFormat("$ #,##0.00;$(#,##0.00)");
- newSheet.getRange('J47').setNumberFormat("$ #,##0.00;$(#,##0.00)");
- //Formatea porcentajes
- newSheet.getRange('F49:F51').setNumberFormat("##0.00");
- newSheet.getRange('F49').setValue(newSheet.getRange('F49').getDisplayValue() * 100);
- newSheet.getRange('F50').setValue(newSheet.getRange('F50').getDisplayValue() * 100);
- newSheet.getRange('F51').setValue(newSheet.getRange('F51').getDisplayValue() * 100);
- newSheet.getRange('F52').setValue(newSheet.getRange('F52').getDisplayValue());
- return convertSpreadsheetToPdf('', newFileId, '', fileName);
- }
- function moveFiles(sourceFileId, targetFolderId) {
- var file = DriveApp.getFileById(sourceFileId);
- file.getParents().next().removeFile(file);
- DriveApp.getFolderById(targetFolderId).addFile(file);
- return file.getId();
- }
- function convertSpreadsheetToPdf(email, spreadsheetId, sheetName, pdfName) {
- var spreadsheet = spreadsheetId ? SpreadsheetApp.openById(spreadsheetId) : SpreadsheetApp.getActiveSpreadsheet();
- spreadsheetId = spreadsheetId ? spreadsheetId : spreadsheet.getId()
- var sheetId = sheetName ? spreadsheet.getSheetByName(sheetName).getSheetId() : null;
- var pdfName = pdfName ? pdfName : spreadsheet.getName();
- var parents = DriveApp.getFileById(spreadsheetId).getParents();
- var folder = parents.hasNext() ? parents.next() : DriveApp.getRootFolder();
- var url_base = spreadsheet.getUrl().replace(/edit$/,'');
- var url_ext = 'export?exportFormat=pdf&format=pdf' //export as pdf
- // Print either the entire Spreadsheet or the specified sheet if optSheetId is provided
- + (sheetId ? ('&gid=' + sheetId) : ('&id=' + spreadsheetId))
- // following parameters are optional...
- + '&size=letter' // paper size
- + '&portrait=true' // orientation, false for landscape
- + '&fitw=true' // fit to width, false for actual size
- + '&sheetnames=false&printtitle=false&pagenumbers=false' //hide optional headers and footers
- + '&gridlines=false' // hide gridlines
- + '&fzr=false'; // do not repeat row headers (frozen rows) on each page
- var options = {
- headers: {
- 'Authorization': 'Bearer ' + ScriptApp.getOAuthToken(),
- }
- }
- var response = UrlFetchApp.fetch(url_base + url_ext, options);
- var blob = response.getBlob().setName(pdfName + '.pdf');
- var file = folder.createFile(blob);
- if (email) {
- var mailOptions = {
- attachments:blob
- }
- MailApp.sendEmail(
- email,
- "Here is a file named " + pdfName,
- "Please let me know if you have any questions or comments.",
- mailOptions);
- }
- return file.getUrl()
- }
- function agregarListaCotizaciones(sheet, sheetName, codigo, idCliente, nombreCliente, fechaEnvio, moneda, cambio, total, fileUrl) {
- var sheet = SpreadsheetApp.getActiveSpreadsheet();
- var now = new Date();
- var fecha = Utilities.formatDate(now, "GMT-6", "dd/MM/yyyy HH:mm:ss");
- var row = [codigo, fecha, idCliente, nombreCliente, fechaEnvio, moneda, cambio, total, fileUrl];
- sheet.getSheetByName('Cotizaciones').appendRow(row);
- }
RAW Paste Data

