tutorial scripts script programar lenguaje google español curso apps app google-apps-script google-drive-sdk google-drive-api

google apps script - scripts - Guiones de aplicaciones de Google: envíe por correo electrónico una hoja de cálculo como Excel



lenguaje google apps script (2)

Aquí hay una versión actualizada y funcional. Un requisito previo para que este script de Google Apps funcione es que el servicio avanzado de Google Drive API v2 debe estar habilitado. Habilítelo en su script de Google Apps a través de Recursos -> Servicios avanzados de Google ... -> Drive API v2 -> activado . Luego, esa ventana le indicará que también debe habilitar este servicio en la Consola de desarrolladores de Google. ¡Sigue el enlace y habilita el servicio allí también! Cuando termines, solo usa este script.

/** * Thanks to a few answers that helped me build this script * Explaining the Advanced Drive Service must be enabled: http://stackoverflow.com/a/27281729/1385429 * Explaining how to convert to a blob: http://ctrlq.org/code/20009-convert-google-documents * Explaining how to convert to zip and to send the email: http://ctrlq.org/code/19869-email-google-spreadsheets-pdf * New way to set the url to download from by @tera */ function emailAsExcel(config) { if (!config || !config.to || !config.subject || !config.body) { throw new Error(''Configure "to", "subject" and "body" in an object as the first parameter''); } var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var spreadsheetId = spreadsheet.getId() var file = Drive.Files.get(spreadsheetId); var url = ''https://docs.google.com/spreadsheets/d/''+spreadsheetId+''/export?format=xlsx''; var token = ScriptApp.getOAuthToken(); var response = UrlFetchApp.fetch(url, { headers: { ''Authorization'': ''Bearer '' + token } }); var fileName = (config.fileName || spreadsheet.getName()) + ''.xlsx''; var blobs = [response.getBlob().setName(fileName)]; if (config.zip) { blobs = [Utilities.zip(blobs).setName(fileName + ''.zip'')]; } GmailApp.sendEmail( config.to, config.subject, config.body, { attachments: blobs } ); }

Actualización: actualicé la forma de configurar la url para descargar. Hacerlo a través de la colección file.exportLinks ya no funciona. Gracias a @tera por señalar eso en su respuesta.

¿Cómo se crea un script de aplicación que adjunte una hoja de cálculo como un archivo de Excel y lo envíe por correo electrónico a una determinada dirección de correo electrónico?

Hay algunas publicaciones antiguas en Stackoverflow sobre cómo hacer esto, sin embargo, parecen estar desactualizadas ahora y no parecen funcionar.

Gracias.


Parece que la respuesta de @Christiaan Westerbeek es acertada, pero ha pasado un año desde su publicación y creo que debe haber una pequeña modificación en el guión que ha dado anteriormente.

var url = file.exportLinks[MimeType.MICROSOFT_EXCEL];

Hay algo mal con esta línea de código, tal vez exportLinks ahora se ha depreciado. Cuando ejecuté su código, dio un error al siguiente efecto:

TypeError: No se puede leer la propiedad " application/vnd.openxmlformats-officedocument.spreadsheetml.sheet " de undefined.

La solución es la siguiente:

La URL en la línea de código anterior es básicamente la URL "descargar como xlsx" que se puede usar para descargar directamente la hoja de cálculo como un archivo xlsx que se obtiene desde File> Download as > Microsoft Excel (.xlsx)

Este es el formato:

https://docs.google.com/spreadsheets/d/<<<ID>>>/export?format=xlsx&id=<<<ID>>> << < https://docs.google.com/spreadsheets/d/<<<ID>>>/export?format=xlsx&id=<<<ID>>> >> https://docs.google.com/spreadsheets/d/<<<ID>>>/export?format=xlsx&id=<<<ID>>> << < https://docs.google.com/spreadsheets/d/<<<ID>>>/export?format=xlsx&id=<<<ID>>> >> donde << >> debe reemplazarse por la ID de su archivo.

Marque here para comprender fácilmente cómo extraer la ID de la URL de su hoja de Google.