Este artículo se ha usado para el proyecto : Organizador de emails
A veces nos puede resultar útil que un script pueda leer nuestros correos para organizarlos, recopilar información o filtrarlos.
Como casi siempre que trabajamos con GAS, es más fácil implementarlo de lo que podría parecer en un principio.
Con estas pocas lineas del ejemplo, ejecutadas desde una hoja de cálculo, podréis ver los resultados.
function LeerEmail() { var emails = GmailApp.getInboxThreads(); var string = ""; for(var e = 0 ; e < emails.length ; ++e ) { string += emails[e].getFirstMessageSubject() + "\n"; } SpreadsheetApp.getUi().alert(string); }
El resultado que aparecerá será algo de este estilo:
Espero que os sirva para vuestros proyectos
¿Cómo podría obtener solamente los mensajes que están etiquetados con determinada etiqueta?
ResponderEliminarNo lo he probado, pero debería funcionarte esto:
ResponderEliminarfunction LeerEmail()
{
var emails = GmailApp.getInboxThreads();
var string = "";
for(var e = 0 ; e < emails.length ; ++e )
{
var labels = emails[e].getLabels();
for(var l = 0 ; l < labels.length ; ++l )
{
if ( labels[l].getName() == "Trabajo" )
{
string += emails[e].getFirstMessageSubject() + "\n";
}
}
}
SpreadsheetApp.getUi().alert(string);
}
Evidentemente donde pone "Trabajo" pon la etiqueta que tu necesites.
Ya me contaras como te ha ido
Buenos días, como seria un script para extraer información de un correo y exportar el cuerpo del mensaje en un excel??
ResponderEliminarLo mismo que tienes en este post pero:
Eliminar1. Deberias seleccionar que correo quieres extraer (emails[x])
2. Dentro de ese correo deberias obtener todos los mensajes de la conversación con getMessages()
3. Deberias seleccionar cual de esos mensajes es el que quieres [y]
4. Deberias obtener el cuerpo del mensaje en cuestión con getPlainBody().
Resumiendo, si quisieras obtener el cuerpo del primer mensaje de tu bandeja de entrada deberias hacer algo de este estilo:
emails[0].getMessages()[0].getPlainBody()
Para poner esa información en un excel ( hoja de calculo de google, mejor :) ) te remito al tutorial en concreto: http://googleappscriptsweb.blogspot.com.es/2015/02/como-escribir-en-una-celda-de-una-hoja.html
Espero q te sirva
Nos vemos
¡Hola?, muchas gracias por el código, funciona a la perfeccion... duda, y si tengo un correo delegado? como puedo obtener esos correos? el correo delegado lo obtenego con la siguiente funcion GmailApp.getAliases(), pero no encuentro como obtener los mails.
ResponderEliminarGracias
Te tengo que decir que nunca me lo había planteado. No te puedo responder por que es de esas pocas ocasiones que no se si tiene solución lo que preguntas. Conociendo la política de permisos de google dudo mucho que permitan ejecutar este tipo de scripts en correos delegados, aunque no me atrevo a asegurarlo. Siento no poder ser de más ayuda. Tal vez en stackoverflow puedan darte más información.
Eliminarno te preocupes, muchas gracias por responder.
EliminarLlevo un buen rato analizando los objetos y ningún metodo me lo da.
Saludos
Este tema me genero una perdida de tiempo que no tenia previsto, debido a una que me entregaron un ASA ya configurado y tuve que investigar como realizar un recuperar contraseña facebooka este equipo, y todos los post que conseguí eran en ingles, y quisiera dejarles un articulo resumido en español de la información que es fidedigna, ya que la probé en mi propio equipo
ResponderEliminarPako la duda sonora bien nada que ver, pero donde empiezo a codear? por ejemplo que una hoja de google esta en herramientas, pero si quiero manejar mi gmail donde deberia poner el codigo?
ResponderEliminarYo siempre hago el codigo para gmail dentro de una hoja de calculo.
EliminarPiensa que el código se ejecuta en la nube el donde resida el script (Casi) no afecta.
Espero q te sirva
Nos vemos
como puedo obtener solo un correo con un id especificado?
ResponderEliminarYo te diria que seleccionando el titulo del mensaje. Es lo mas usual.
EliminarNos vemos
Hola,
ResponderEliminarComo puedo hacer si tengo una lista de direcciones de correos en google sheets y si alguno de estos envian un correo electronico se dirigan a una etiqueta especifica.
Desde ya gracias por tu apoyo.
Saludos.
Hola,
EliminarMe encanta ayudaros cuando teneis alguna duda de programación pero cuando me pedís que os haga un proyecto solo puedo dirigiros a mi cuenta de Fiverr.
En la columna de la derecha-arriba en esta web verás el link a mi cuenta de Fiverr.
Si lo intentas y te quedas atascado en algun momento hazmelo saber y te ayudaré gratis , si quieres los servicios de un programador algo costará :) (por lo que pides, no debería ser mucho)
Nos vemos!
Hola buenas tardes, soy pasante en una ONG y me pidieron sistematizar su correo, para ser específicos solo los correos que tengan por 'subject' "suscriptor" y dentro de ese correo viene el correo del suscriptor, el cual lo tengo que pasar a un archivo Excel, pero yo en verdad no sé nada de eso, no sé si me puedas ayudar y si tiene un costo les comentaría a mis líderes. Gracias de antemano.
ResponderEliminarSi tu correo es de gmail y los datos los quieres en una hoja de google puedo hacerlo.
ResponderEliminarNo obstante, cuando alguien me pide que le haga un script tengo la mala costumbre de cobrarlo :)
Tienes dos opciones:
- Puedes ponerte en contacto conmigo en esta dirección a fin de que podamos ver como facturartelo: software.developer.bordas@gmail.com
- Si lo prefieres podemos hacer el proyecto via Fiverr: http://www.fiverr.com/s2/bbb67c5713
Ya me diras que opción te va mejor
Nos vemos
Como puedo obtener los correos de los remitentes??
ResponderEliminarHola , Con getFrom del mensaje.
EliminarCreo que con esto conseguirias lo que quieres
var threads = GmailApp.getInboxThreads();
var messages = threads[0].getMessages();
var senderEmail = messages[0].getFrom();
Ya me diras como te va
Nos vemos
Muchas gracias, ya lo tengo, el problema ahora es que me limita los resultados a no más de 700, no entiendo porque, tendra alguna restricción?, mi codigo es el siguiente:
ResponderEliminarfunction SearchGmail3() {
var sheet = SpreadsheetApp.getActiveSheet();
var row = 2;
// Clear existing search results
sheet.getRange(2, 1, sheet.getMaxRows() - 1, 4).clearContent();
// Which Gmail Label should be searched?
var label = "inbox";
// Get the Regular Expression Search Pattern
var pattern = sheet.getRange("F4").getValue();
// Retrieve all threads of the specified label
var threads = GmailApp.search("in:" + label);
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var m = 0; m < messages.length; m++) {
var msg = messages[m].getBody();
// Does the message content match the search pattern?
if (msg.search(pattern) !== -1) {
// Format and print the date of the matching message
sheet.getRange(row,1).setValue(
Utilities.formatDate(messages[m].getDate(),"GMT","yyyy-MM-dd"));
// Print the sender's name and email address
sheet.getRange(row,2).setValue(messages[m].getFrom());
// Print the message subject
sheet.getRange(row,3).setValue(messages[m].getSubject());
// Print the unique URL of the Gmail message
var id = "https://mail.google.com/mail/u/0/#all/"
+ messages[m].getId();
sheet.getRange(row,4).setFormula(
'=hyperlink("' + id + '", "View")');
// Move to the next row
row++;
}
}
}
}
Simplemente eres lo máximo. Soy autodidacta y estoy aprendiendo mucho. Que Dios te bendiga.
ResponderEliminarPara eso está el blog. Si no sirviera para algo, no lo escribiría.
EliminarNo vaciles en hacerme llegar tus dudas
Nos vemos
Y gracias! :D
EliminarAgradezco el tiempo que tomas para subir este contenido. Tengo una duda, en la cuenta de correo que se tiene se van a recibir solamente correos con notificaciones de una plataforma, el remitente siempre será el mismo y el tipo de respuesta será igual pues es una plantilla que tiene exactamente la misma información. Lo que cambia en cada correo es una liga que está ubicada siempre en la misma posición que llega en cada correo ¿es posible extraer ese único texto de entre todo el contenido?. Muchas gracias.
ResponderEliminarHola Lord Pakus, gracias por este contenido, disculpa ¿cómo puedo traer del cuerpo del correo únicamente una cadena de valores específica que es una liga?, ya que con getBodyPlainText() trae todo el mensaje completo, ¿Se puede? De antemano te agradezco mucho tu tiempo.
ResponderEliminar