2012-05-02 4 views
14

Je recherche des exemples d'un modèle dans lequel un script de démon s'exécutant dans un domaine GoogleAppsForBusiness peut analyser les messages électroniques entrants. Certains messages contiendront un appel à un GAScript différent qui pourrait, par exemple, modifier le paramètre ACL d'un document spécifique.Déclenchez Google Apps Script par e-mail

Je suppose que quelqu'un d'autre a déjà implémenté ce modèle mais je ne suis pas sûr de la façon dont je vais trouver des exemples.

thx

Répondre

13

Vous pouvez trouver des exemples de script dans l'Apps Script user guide et tutorials. Vous pouvez également rechercher des discussions connexes sur le forum. Mais je ne pense pas qu'il y en ait un qui vous corresponde exactement, tout le code est là pour sûr, mais pas sur un seul script.

Il est possible que quelqu'un ait écrit un tel script et ne l'ait jamais publié. Comme c'est assez simple à faire et que l'usage de chacun est différent. Par exemple, comment envisagez-vous de marquer vos emails (ceux que vous avez déjà lus, exécutés, etc.)? Cela peut être sympa d'utiliser un filtre Gmail pour vous aider, en plaçant tout de suite les e-mails "command" dans une étiquette, et le script supprime simplement l'étiquette (et peut-être en définit une autre). Le point est, voir comment il peut différer beaucoup.

Aussi, je pense que c'est plus facile si vous pouvez garder toutes les fonctions dans le même projet de script. Peut-être juste sur des fichiers différents. Comme l'appel de différents scripts est beaucoup plus compliqué.

Quoi qu'il en soit, il est comment je le démarre:

//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: Je ne l'ai pas testé ce code

+4

Y a-t-il maintenant moyen de déclencher le script lors de la réception d'un e-mail (au lieu de simplement définir un temporisateur)? – Trevor

+0

@threed Pas que je sache de –

+0

Eh bien c'est juste inutile alors. Rien de tel que procmail sur GMail? – Michael

6

Vous pouvez créer une application Google qui sera déclenchée par un message électronique entrant envoyé à une adresse spéciale pour l'application. Le message est converti en HTTP POST que votre application reçoit.

Plus de détails ici: https://developers.google.com/appengine/docs/python/mail/receivingmail

Je havn't essayé moi-même, mais encore le feront dans les prochains jours.

+3

La question portait sur une solution dans Google Apps Script, et non sur AppEngine. –

+3

Eh bien, c'est le résultat d'avoir trop de produits différents avec un nom similaire, beaucoup de chevauchement et de confusion ... des excuses pour faire de mon mieux pour être utile. Ma propre implémentation a été couronnée de succès. –

+0

@EdRandall Je sais que ça fait un moment, mais ça vous dérange de partager la logique de base que vous avez implémentée? Je me trouve dans le besoin de quelque chose de similaire, avoir à déclencher un script python via un email (le script python se trouve maintenant sur une instance EC2, mais je pourrais très bien passer à AppENgine, c'est la même chose?) Merci – newyuppie

-1

Il y a deux façons. Vous pouvez d'abord utiliser Google pub/sub et gérer les notifications incomming dans votre point de terminaison AppScrit. La seconde consiste à utiliser le package googleapis npm dans votre code AppScript an example here. J'espère que cela aide.

Voici les étapes:

  • a fait un projet sur la chose https://console.cloud.google.com/cloudpubsub/topicList?project=testmabs?
  • fait un sujet PubSub
  • fait un abonnement à l'url webhook
  • a ajouté que l'URL des sites que je possède, je suppose? Je pense que je devais faire des choses DNS pour confirmer que je possède, et l'erreur était super vague pour comprendre ce que je devais faire, en essayant d'ajouter l'abonnement
  • a ajouté l'autorisation au sujet pour "gmail-api [email protected] "en tant qu'éditeur (j'ai également ajouté .... apps.googleusercontent.com et [email protected] mais je ne pense pas que j'en avais besoin)
  • créé oauth info client et téléchargé dans la section des informations d'identification de la console google. (oauthtrash.json)
+2

Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien pour référence. Les réponses à lien uniquement peuvent devenir invalides si la page liée change. - [De l'avis] (/ review/low-quality-posts/16436033) –

+0

Merci, je vais corriger ma réponse –

Questions connexes