¡Cómo crear documentos masivos usando dato desde GOOGLE SHEETS!
¡Crea Documentos masivos con datos de GOOGLE SHEETS! (Script Automático)
Vamos a crear un script de Google Apps Script para generar documentos personalizados (cartas, contratos, etc.) en masa utilizando datos de tu hoja de cálculo.
Este script automatiza la creación de documentos personalizados utilizando datos de una hoja de cálculo de Google Sheets. En este caso, se crea una carta de presentación personalizada con datos como el nombre, correo electrónico, teléfono y fecha de ingreso. Además, puedes guardar el documento como PDF y enviarlo por correo electrónico.
Pasos a seguir
-
Prepara tu hoja de cálculo:
- Crea una hoja de cálculo en Google Sheets y añade los datos que quieres usar en las cartas.
## Datos de ejemplo
| Nombre | Correo Electrónico | Teléfono | Fecha de Ingreso | Guardar como PDF | Enviar por correo | Link |
| -------------- | -------------------------- | -------- | ---------------- | ---------------- | ----------------- |" " |
| Juan Pérez | juan.perez@example.com | 555-1234 | 2023-01-15 | FALSO | FALSO |" " |
| María López | maria.lopez@example.com | 555-5678 | 2022-05-22 | FALSO | FALSO |" " |
| Carlos Sánchez | carlos.sanchez@example.com | 555-8765 | 2024-03-01 | FALSO | FALSO |" " |
| Ana Martínez | ana.martinez@example.com | 555-4321 | 2021-11-11 | FALSO | FALSO |" " |
| Pedro Gómez | pedro.gomez@example.com | 555-6789 | 2023-07-30 | FALSO | FALSO |" " |
- Crea tu plantilla de carta:
-
Crea un documento de Google Docs que actúe como plantilla de la carta.
-
Reemplaza los datos variables (nombre, correo electrónico, teléfono y fecha de ingreso) por las siguientes etiquetas:
{{name}}
{{emailAddress}}
{{phoneNumber}}
{{startDate}}
-
Guarda la plantilla de la carta y copia su ID.
Plantilla de carta
Junio, 2024.
Estimado/a {{name}},
Me dirijo a usted con el propósito de validar la información presente en nuestros registros. Por favor,
revise los siguientes datos y confirme si son correctos:
Nombre completo: {{name}}
Correo Electrónico: {{emailAddress}}
Teléfono: {{phoneNumber}}
Fecha de Ingreso: {{startDate}}
En caso de que haya alguna discrepancia o si necesita actualizar algún dato,
le agradecería que nos lo comunicara a la mayor brevedad posible.
Espero poder recibir su respuesta pronto para asegurar que nuestra
información esté actualizada y correcta.
Sin más por el momento, me despido atentamente de la gerencia.
-
Crea una carpeta en Google Drive:
- Crea una nueva carpeta en Google Drive para almacenar los documentos generados.
- Copia el ID de la carpeta creada.
-
Copia el script en tu hoja de cálculo:
- Abre la hoja de cálculo de Google Sheets.
- Haz clic en “Herramientas” > “Editor de secuencias de comandos”.
- Pega el siguiente código en el editor de scripts:
function crearCopia() {
const templete = DriveApp.getFileById('ID_TEMPLATE'); // Reemplaza ID_TEMPLATE con el ID de tu plantilla de carta
const destinationFolder = DriveApp.getFolderById('ID_FOLDER'); // Reemplaza ID_FOLDER con el ID de tu carpeta
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Data');
const rows = sheet.getRange('B4:H').getValues();
rows.forEach((row, i) => {
if (row[0] === '') return;
const copy = templete.makeCopy(`${row[0]} carta detalle`, destinationFolder);
const doc = DocumentApp.openById(copy.getId());
const bodyDoc = doc.getBody();
bodyDoc.replaceText('{{name}}', row[0]);
bodyDoc.replaceText('{{emailAddress}}', row[1]);
bodyDoc.replaceText('{{phoneNumber}}', row[2]);
bodyDoc.replaceText('{{startDate}}', row[3].toLocaleString());
doc.saveAndClose();
const blob = DriveApp.getFileById(copy.getId()).getAs('application/pdf');
const pdfFile = destinationFolder.createFile(blob);
const url = pdfFile.getUrl();
copy.setTrashed(!Boolean(row[4]));
if (row[5]) {
MailApp.sendEmail({
to: ' ', // Reemplaza con tu correo
subject: 'Carta de ' + row[0],
attachments: [blob],
body: 'Hola ' + row[0] + 'envio carta adjunta',
});
}
sheet.getRange(4 + i, 8).setValue(url);
});
SpreadsheetApp.getActiveSpreadsheet().toast('Finalizado', 'Cartas creadas');
}
function onOpen() {
const ui = SpreadsheetApp.getUi();
ui.createMenu('🗃️ Procesar cartas').addItem('Procesar cartas', 'generarDocumentos').addToUi();
}
-
Guarda el script y autoriza el acceso:
- Haz clic en “Guardar”.
- Cuando se te solicite, autoriza el script para que acceda a tus archivos de Google Drive y Google Sheets.
-
Ejecuta el script:
- Haz clic en “Ejecutar” > “crearCopia”.
- Acepta los permisos necesarios.
- El script creará las cartas personalizadas en la carpeta que especificaste en Google Drive.
Detalles del script
templete
: Variable que guarda el archivo de plantilla de carta.destinationFolder
: Variable que guarda la carpeta donde se almacenarán los documentos.sheet
: Variable que guarda la hoja de cálculo de Google Sheets.rows
: Variable que guarda los datos de la hoja de cálculo.copy
: Variable que guarda la copia de la plantilla de carta con los datos personalizados.doc
: Variable que guarda el documento de la copia de la carta.bodyDoc
: Variable que guarda el cuerpo del documento de la copia de la carta.blob
: Variable que guarda el documento de la copia de la carta como un archivo PDF.pdfFile
: Variable que guarda el archivo PDF en la carpeta especificada.url
: Variable que guarda la URL del archivo PDF generado.MailApp.sendEmail
: Función que envía un correo electrónico con la carta como adjunto.
Cómo usar el script
- Crea una nueva carta: En la hoja de cálculo, ingresa los datos para una nueva carta.
- Ejecuta el script: Haz clic en “Procesar cartas” en el menú de la hoja de cálculo.
- Revisa los documentos generados: Los documentos generados se almacenarán en la carpeta que especificaste.
¡Espero que este script te sea de utilidad!