Guiones de aplicaciones de Google: envíe por correo electrónico una hoja de cálculo como excel

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

Hay algunas publicaciones más antiguas sobre Stackoverflow sobre cómo hacer esto, sin embargo, ahora parecen estar desactualizadas 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 es necesario que haya alguna 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 que exportLinks ahora se haya depreciado. Cuando ejecuté su código, produjo un error con el siguiente efecto:

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

La solución alternativa 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 de File> Download as > Microsoft Excel (.xlsx)

Este es el formato:

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

Consulte aquí para comprender fácilmente cómo extraer el ID de la URL de su hoja de google.

Aquí hay una versión actualizada y funcional. Un prerrequisito para que funcione este script de Google Apps es que el servicio de Google Drive API v2 Advanced debe estar habilitado. Habilítelo en su script de Google Apps a través de Recursos -> Servicios avanzados de Google … -> Drive API v2 -> on . Entonces, esa ventana le dirá que también debe habilitar este servicio en Google Developers Console. ¡Sigue el enlace y habilita el servicio allí también! Cuando haya terminado, solo use 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.