En este ejemplo veremos 3 opciones de conversion
generar el pdf mediante una url de descarga (SIN CÓDIGO) aprovechando el nombre del archivo y la hoja para administrar el nombre final del archivo pdf a descargar
mediante código Google apps script asignando el nombre y proveyendo un link de descarga mediante una ventana web flotante en la hoja.
igual que el anterior , pero con la variante de poder adicionar la fecha en el nombre del archivo.
veamos entonces 👇
aquí vemos el editor de secuencia de comandos con los 3 scripts comentados
al final puedes encontrar el código para copiar y pegar en tu HCG, no olvides hacer las adaptaciones correspondientes en caso necesario.
NOTA.- el código usa la misma url de descarga del primer ejemplo:
https://docs.google.com/spreadsheets/d/aquí va el ID del archivo/export?gid=aquí va el gid de tu hoja&format=pdf&range=$B$3:$G14&size=letter&portrait=false&horizontal_alignment=CENTER&vertical_alignment=MIDDLE&gridlines=false
este dato sera el valor que se menciona en el rango A24, es decir en esta línea de código:
let link = SpreadsheetApp.getActive().getSheetByName("Materias").getRange("A24").getValue()
revisa el video para hacer las adaptaciones las veces que consideres necesario.
comparte este articulo o el video , si te fueron de utilidad 😊
si el tema fue de utilidad comparte este articulo con otras personas, nos ayudarías mucho haciendo difusión de estas propuestas 😉
//------------ funcion Auxiliar --------------------------------------
function obtenerArchivoComoBlob(convertirURL) {
let response = UrlFetchApp.fetch(convertirURL, {
muteHttpExceptions: true,
headers: {
Authorization: 'Bearer ' + ScriptApp.getOAuthToken(),
},
});
return response.getBlob();
}
function exportRangoComoPDF() {
let link = SpreadsheetApp.getActive().getSheetByName("Materias").getRange("A24").getValue()
let blob = obtenerArchivoComoBlob(link);//hace la conversión
/* Logger.log("Tipo de Contenido: " + blob.getContentType());//verifica que ya es un pdf
Logger.log("Tamaño del archivo en MB: " + blob.getBytes().length / 1000000); */
let nvoPDF = DriveApp.createFile(blob); //se crea en Drive
let id = nvoPDF.setName("Nombre personalizado-prueba.pdf").getId();//asigna nombre y obtiene el Id
let linkDescarga = "https://docs.google.com/uc?export=download&id="+id ; //link descarga pdf
let msgHTML = "<p>📥 descarga ofrecida by OE<p>";
msgHTML += "<b><a style='font-size:20px' href='"+ linkDescarga +"'>descargar</a><b>";
msgHTML += "<p>Gracias por ver los vídeos 😊</p>";
let ventana = HtmlService.createHtmlOutput(msgHTML)
.setWidth(330)
.setHeight(160);
SpreadsheetApp.getUi().showModelessDialog(ventana,"Bajar PDF")
DriveApp.getFileById(id).setTrashed(true);
//opcional el eliminar de Drive, eso dependera si solo se desea bajar o bajar y eliminar de Drive
}
//------------- opcion #2 nombre del archivo + hoja + fecha actuaizada --------------------------------
//funcion auxiliar que se usa en la principal para hacer la exportacion como PDF
function actualizaFecha(){
let nAnt = SpreadsheetApp.getActiveSheet().getName();
let fecha = SpreadsheetApp.getActiveSheet().getRange("I4").getDisplayValue();
let n = nAnt.substring(0,3); //SpreadsheetApp.getUi().alert(n);
if(n == "Pru"){
SpreadsheetApp.getActiveSheet().setName("Pru-"+fecha);
return "Pru-"+fecha
}
}
function exportRangoComoPDF_2() {
let nombreFecha = actualizaFecha();//cambia el nombre de la hoja y trae el dato
let nomArch = SpreadsheetApp.getActiveSpreadsheet().getName();//nombre del archivo
//obtiene el nuevo nombre de la hoja:
let link = SpreadsheetApp.getActive().getSheetByName(nombreFecha).getRange("A24").getValue();
//el resto practicamente es igual al codigo anterior
let blob = obtenerArchivoComoBlob(link);//hace la conversión
let nvoPDF = DriveApp.createFile(blob); //se crea en Drive
let id = nvoPDF.setName(nomArch+" "+nombreFecha+".pdf").getId();//asigna nombre y obtiene el Id
let linkDescarga = "https://docs.google.com/uc?export=download&id="+id ; //link descarga pdf
let msgHTML = "<p>📥 descarga ofrecida by OE<p>";
msgHTML += "<b><a style='font-size:20px' href='"+ linkDescarga +"'>descargar</a><b>";
msgHTML += "<p>Gracias por ver los vídeos 😊</p>";
let ventana = HtmlService.createHtmlOutput(msgHTML)
.setWidth(330)
.setHeight(160);
SpreadsheetApp.getUi().showModelessDialog(ventana,"Bajar PDF")
DriveApp.getFileById(id).setTrashed(true);
}
Síguenos y suscríbete en: