seleccionar rango de fechas de una hoja de google sheets para que envie pdf por correo automatizado
Publicado por appscript (1 intervención) el 18/03/2025 13:43:38
function enviarReporteSemanal() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var hoja = ss.getSheetByName("Registro Prestaciones 2025"); // Nombre de la hoja
var idSpreadsheet = ss.getId();
var idHoja = hoja.getSheetId();
// Obtener todos los datos de la hoja
var datos = hoja.getDataRange().getValues();
if (datos.length < 2) {
Logger.log("No hay datos en la hoja.");
return;
}
// Definir el rango de fechas de la semana (Lunes - Viernes)
var hoy = new Date();
var diff = hoy.getDay() - 1; // Si es viernes (5), diff = 4
var fechaInicio = new Date(hoy);
fechaInicio.setDate(hoy.getDate() - diff);
fechaInicio.setHours(0, 0, 0, 0);
var fechaFin = new Date(hoy);
fechaFin.setHours(23, 59, 59, 999);
// Filtrar solo las filas de la semana actual
var filasFiltradas = datos.filter((fila, index) => {
if (index === 0) return true; // Mantener el encabezado
var fechaFila = new Date(fila[0]); // Se asume que la fecha está en la columna A (índice 0)
return fechaFila >= fechaInicio && fechaFila <= fechaFin;
});
if (filasFiltradas.length === 1) { // Solo el encabezado = no hay datos
Logger.log("No se encontraron registros para la semana actual.");
return;
}
// Construir la URL de exportación a PDF (mantiene el diseño de la hoja)
var exportUrl = "https://docs.google.com/spreadsheets/d/" + idSpreadsheet + "/export?" +
"format=pdf" +
"&portrait=false" + // Orientación horizontal
"&size=custom" + // Tamaño personalizado (8.5x13 pulgadas)
"&w=612" + // 8.5 pulgadas = 612 puntos
"&h=936" + // 13 pulgadas = 936 puntos
"&sheetnames=true" + // Mostrar nombre de la hoja
"&printtitle=true" + // Incluir encabezado
"&pagenumbers=false" + // Sin números de página
"&gridlines=true" + // Mantener líneas de cuadrícula
"&fzr=true" + // Mantener filas congeladas
"&gid=" + idHoja;
// Obtener el PDF como blob (archivo binario)
var token = ScriptApp.getOAuthToken();
var response = UrlFetchApp.fetch(exportUrl, {
headers: {
'Authorization': 'Bearer ' + token
}
});
var pdfBlob = response.getBlob().setName("Reporte_Semanal.pdf");
// Enviar el PDF por correo
var destinatario = "correo@ejemplo.com"; // Reemplaza con tu correo
var asunto = "Reporte Semanal - Registro Prestaciones 2025";
var mensaje = "Adjunto el reporte semanal del " +
Utilities.formatDate(fechaInicio, ss.getSpreadsheetTimeZone(), "dd/MM/yyyy") +
" al " +
Utilities.formatDate(fechaFin, ss.getSpreadsheetTimeZone(), "dd/MM/yyyy") + ".";
MailApp.sendEmail({
to: destinatario,
subject: asunto,
body: mensaje,
attachments: [pdfBlob]
});
Logger.log("
var ss = SpreadsheetApp.getActiveSpreadsheet();
var hoja = ss.getSheetByName("Registro Prestaciones 2025"); // Nombre de la hoja
var idSpreadsheet = ss.getId();
var idHoja = hoja.getSheetId();
// Obtener todos los datos de la hoja
var datos = hoja.getDataRange().getValues();
if (datos.length < 2) {
Logger.log("No hay datos en la hoja.");
return;
}
// Definir el rango de fechas de la semana (Lunes - Viernes)
var hoy = new Date();
var diff = hoy.getDay() - 1; // Si es viernes (5), diff = 4
var fechaInicio = new Date(hoy);
fechaInicio.setDate(hoy.getDate() - diff);
fechaInicio.setHours(0, 0, 0, 0);
var fechaFin = new Date(hoy);
fechaFin.setHours(23, 59, 59, 999);
// Filtrar solo las filas de la semana actual
var filasFiltradas = datos.filter((fila, index) => {
if (index === 0) return true; // Mantener el encabezado
var fechaFila = new Date(fila[0]); // Se asume que la fecha está en la columna A (índice 0)
return fechaFila >= fechaInicio && fechaFila <= fechaFin;
});
if (filasFiltradas.length === 1) { // Solo el encabezado = no hay datos
Logger.log("No se encontraron registros para la semana actual.");
return;
}
// Construir la URL de exportación a PDF (mantiene el diseño de la hoja)
var exportUrl = "https://docs.google.com/spreadsheets/d/" + idSpreadsheet + "/export?" +
"format=pdf" +
"&portrait=false" + // Orientación horizontal
"&size=custom" + // Tamaño personalizado (8.5x13 pulgadas)
"&w=612" + // 8.5 pulgadas = 612 puntos
"&h=936" + // 13 pulgadas = 936 puntos
"&sheetnames=true" + // Mostrar nombre de la hoja
"&printtitle=true" + // Incluir encabezado
"&pagenumbers=false" + // Sin números de página
"&gridlines=true" + // Mantener líneas de cuadrícula
"&fzr=true" + // Mantener filas congeladas
"&gid=" + idHoja;
// Obtener el PDF como blob (archivo binario)
var token = ScriptApp.getOAuthToken();
var response = UrlFetchApp.fetch(exportUrl, {
headers: {
'Authorization': 'Bearer ' + token
}
});
var pdfBlob = response.getBlob().setName("Reporte_Semanal.pdf");
// Enviar el PDF por correo
var destinatario = "correo@ejemplo.com"; // Reemplaza con tu correo
var asunto = "Reporte Semanal - Registro Prestaciones 2025";
var mensaje = "Adjunto el reporte semanal del " +
Utilities.formatDate(fechaInicio, ss.getSpreadsheetTimeZone(), "dd/MM/yyyy") +
" al " +
Utilities.formatDate(fechaFin, ss.getSpreadsheetTimeZone(), "dd/MM/yyyy") + ".";
MailApp.sendEmail({
to: destinatario,
subject: asunto,
body: mensaje,
attachments: [pdfBlob]
});
Logger.log("
Valora esta pregunta


0