2012-05-02 47 views
14

Estoy buscando ejemplos de un patrón en el que un script demonio que se ejecuta dentro de un dominio GoogleAppsForBusiness pueda analizar los mensajes de correo electrónico entrantes. Algunos mensajes contendrán una llamada a un GAScript diferente que podría, por ejemplo, cambiar la configuración de ACL de un documento específico.Desencadenar Google Apps Script por correo electrónico

Supongo que alguien más ya ha implementado este patrón, pero no estoy seguro de cómo voy a encontrar ejemplos.

THX

Respuesta

13

Puede encontrar ejemplos de secuencias de comandos en el Apps Script user guide y tutorials. También puede buscar discusiones relacionadas en el forum. Pero no creo que haya uno que se adapte exactamente a usted, todo el código está seguro, pero no en un solo script.

Es posible que alguien haya escrito dicho guión y nunca lo haya publicado. Ya que es algo sencillo de hacer y el uso de todos es diferente. Por ejemplo, ¿cómo planeas marcar tus correos electrónicos (los que ya has leído, ejecutado, etc.)? Puede ser útil usar un filtro de Gmail para ayudarlo, colocando los correos electrónicos de "comando" en una etiqueta de inmediato, y la secuencia de comandos simplemente elimina la etiqueta (y posiblemente configure otra). El punto es, mira cómo puede diferir mucho.

Además, creo que es más fácil si puede mantener todas las funciones en el mismo proyecto de script. Posiblemente solo en diferentes archivos. Como llamar a diferentes scripts es mucho más complicado.

De todos modos, él es como me gustaría empezar es:

//set a time-driven trigger to run this function on the desired frequency 
function monitorEmails() { 
    var label = GmailApp.getUserLabelByName('command'); 
    var doneLabel = GmailApp.getUserLabelByName('executed'); 
    var cmds = label.getThreads(); 
    var max = Math.min(cmds.length,5); 
    for(var i = 0; i < max; ++i) { 
    var email = cmds[i].getMessages()[0]; 
    var functionName = email.getBody(); 
    //you may need to do extra parsing here, depending on your usage 

    var ret = undefined; 
    try { 
     ret = this[functionName](); 
    } catch(err) { 
     ret = err; 
    } 
    //replying the function return value to the email 
    //this may make sense or not 
    if(ret !== undefined) 
     email.reply(ret); 
    cmds[i].removeLabel(label).addLabel(doneLabel); 
    } 
} 

PS: No he probado este código

+4

¿Hay ahora forma de activar el script cuando se recibe un correo electrónico (en lugar de simplemente configurar un temporizador)? – Trevor

+0

@threed No es que yo sepa de –

+0

Bueno, eso es inútil entonces. ¿Nada como procmail en GMail? – Michael

6

Puede crear una aplicación de Google que se activará mediante un mensaje de correo electrónico entrante enviado a una dirección especial para la aplicación. El mensaje se convierte a HTTP POST que recibe su aplicación.

Más detalles aquí: https://developers.google.com/appengine/docs/python/mail/receivingmail

havn't I trataron yo mismo todavía, pero van a hacer lo que en los próximos días.

+3

La pregunta era sobre una solución en Google Apps Script, no AppEngine. –

+3

Ah, bueno, eso es el resultado de tener demasiados productos diferentes con un nombre similar, mucha superposición y confusión ... disculpas por hacer todo lo posible para ser útil. Mi propia implementación fue exitosa por cierto. –

+0

@EdRandall Sé que ha pasado un tiempo, pero ¿te importa compartir la lógica básica que has implementado? Me encuentro en la necesidad de algo similar, tener que desencadenar un script python con suerte a través de un correo electrónico (el script python ahora reside en una instancia EC2, pero podría pasar a AppENgine, ¿es lo mismo?) Gracias – newyuppie

-1

Hay dos formas. Primero, puede usar el pub/sub de Google y manejar las notificaciones entrantes en su punto final AppScrit. El segundo es usar el paquete googleapis npm dentro de su código de AppScript an example here. Espero eso ayude.

Estos son los pasos:

  • hecho un proyecto sobre https://console.cloud.google.com/cloudpubsub/topicList?project=testmabs cosa?
  • hizo un tema pubsub
  • hizo una suscripción a la url web hook
  • añadió que url para los sitios que tengo, supongo? Creo que tuve que hacer DNS para confirmar que lo tengo, y el error fue muy vago para descubrir que eso era lo que tenía que hacer, cuando intenté agregar la suscripción
  • agregué permiso para el tema de "gmail-api" [email protected] "como editor (también agregué .... apps.googleusercontent.com y [email protected] pero no creo que los necesitara)
  • creó la información del cliente oauth y la descargué en la sección de credenciales de la consola de google (oauthtrash.json)
+2

Si bien este enlace puede responder a la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. - [De la crítica] (/ review/low-quality-posts/16436033) –

+0

Gracias, corregiré mi respuesta –

Cuestiones relacionadas