2012-05-02 16 views
14

Poszukuję przykładów wzorca, w którym skrypt demonów działający w domenie GoogleAppsForBusiness może analizować przychodzące wiadomości e-mail. Niektóre wiadomości będą zawierać wywołanie innego GAScript, które może na przykład zmienić ustawienie ACL określonego dokumentu.Wywołaj skrypt Google Apps przez e-mail

Zakładam, że ktoś inny już zaimplementował ten wzorzec, ale nie wiem, w jaki sposób mogę znaleźć przykłady.

thx

Odpowiedz

13

Można znaleźć przykłady skrypt w Apps Script user guide i tutorials. Możesz także wyszukać pokrewne dyskusje na temat forum. Ale nie sądzę, że jest taki, który pasuje do ciebie dokładnie, cały kod jest na pewno, ale nie na jednym skrypcie.

Możliwe, że ktoś napisał taki scenariusz i nigdy go nie opublikował. Ponieważ jest to dość proste, a korzystanie z niego jest inne. Na przykład, jak planujesz oznaczać swoje e-maile (te, które już przeczytałeś, wykonałeś itp.)? Dobrym rozwiązaniem może być skorzystanie z filtra do Gmaila, od razu umieszczając e-maile "polecające" na etykiecie, a skrypt po prostu usuwa etykietę (i ewentualnie ustawia inną). Chodzi o to, zobacz, jak może się bardzo różnić.

Sądzę też, że łatwiej będzie zachować wszystkie funkcje w tym samym projekcie skryptu. Prawdopodobnie tylko na różnych plikach. Ponieważ wywoływanie różnych skryptów jest o wiele bardziej skomplikowane.

W każdym razie, to jak bym go uruchomić:

//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: I nie zostało przetestowane ten kod

+4

Czy istnieje sposób wywołania skryptu po otrzymaniu wiadomości e-mail (zamiast ustawiania licznika czasu)? – Trevor

+0

@threed Nie żebym wiedział o –

+0

Cóż, to po prostu bezużyteczne. Nic takiego jak procmail w GMailu? – Michael

6

można utworzyć aplikację Google, który zostanie wywołany przez przychodzące wiadomości e-mail wysłanej specjalny adres dla aplikacji. Wiadomość jest konwertowana na POST HTTP, który otrzymuje twoja aplikacja.

Więcej szczegółów tutaj: https://developers.google.com/appengine/docs/python/mail/receivingmail

havn't próbował to sobie jeszcze, ale będą robić to w ciągu najbliższych kilku dni.

+3

Pytanie dotyczyło rozwiązania w Google Apps Script, a nie AppEngine. –

+3

Cóż, to wynik zbyt wielu różnych produktów o podobnej nazwie, nakładających się na siebie i zamieszaniu ... przepraszam za to, że staram się być pomocny. Moja własna implementacja zakończyła się sukcesem. –

+0

@EdRandall Wiem, że minęło trochę czasu, ale czy myślisz, że podzielasz podstawową logikę, którą zaimplementowałeś? Potrzebuję czegoś podobnego, mam nadzieję wywołać skrypt Pythona z nadzieją poprzez e-mail (skrypt python teraz znajduje się na instancji EC2, ale mogę bardzo dobrze przenieść się do Appengine, czy to to samo?) Dzięki – newyuppie

-1

Istnieją dwa sposoby. Najpierw możesz użyć Google pub/sub i obsługiwać przychodzące powiadomienia w punkcie końcowym AppScrit. Drugim jest użycie pakietu googleapis npm wewnątrz twojego kodu AppScript an example here. Mam nadzieję, że to pomoże.

Są to kroki:

  • wykonane projekt na https://console.cloud.google.com/cloudpubsub/topicList?project=testmabs rzeczy?
  • popełnił temat PubSub
  • dokonał subskrypcji url webhook
  • dodanej URL do stron posiadam, myślę? Myślę, że musiałem zrobić DNS, aby potwierdzić, że jestem jego właścicielem, a błąd był bardzo niejasny, aby dowiedzieć się, co musiałem zrobić, próbując dodać subskrypcję
  • dodane pozwolenie na temat "gmail-api [email protected] "jako wydawca (dodałem także .... apps.googleusercontent.com i [email protected], ale nie sądzę, żebym ich potrzebował)
  • utworzono informacje o kliencie oauth i pobrałem je w sekcji poświadczeń konsoli Google. (oauthtrash.json)
+2

Podczas gdy ten link może odpowiedzieć na pytanie, lepiej umieścić tutaj istotne części odpowiedzi i podać odnośnik. Odpowiedzi dotyczące linków mogą stać się nieprawidłowe, jeśli strona z linkami się zmieni. - [Z recenzji] (/ opinia/niskiej jakości-posts/16436033) –

+0

Dzięki, poprawię swoją odpowiedź –

Powiązane problemy