2016-09-20 2 views
2

Ich erstelle eine App, mit der Google Apps-Skript für das Google Mail-Konto des App-Nutzers hinzugefügt werden kann.Google Mail-Überwachung mit Google Apps-Skript und Push-Benachrichtigung

für die Bearbeitung von Uhren testen, habe ich die folgende app Skriptcode verwendet, die ich von einem Youtube-Tutorial bekam von Spencer Easton (https://www.youtube.com/watch?v=wjHp9_NAEJo)

function doPost(e) 
{ 
    var message = JSON.parse(e.postData.getDataAsString()).message; 
    var data = Utilities.newBlob(Utilities.base64Decode(message.data)).getDataAsString(); 
    var ss = SpreadsheetApp.openById('my_google_sheet_id').getSheets()[0]; 
    ss.appendRow([new Date(), message.message_id, data, "newMail"]); 

    return 200; 
} 


function enrollEmail() { 

    var watchRes = Gmail.newWatchRequest(); 

    watchRes.labelIds = ["INBOX"]; 
    watchRes.labelFilterAction = "include"; 
    watchRes.topicName = "projects/project-id-12345/topics/gmailTrigger"; 

    var response = Gmail.Users.watch(watchRes, "me"); 
} 


function doGet() 
{ 
    enrollEmail(); 
} 

Dann veröffentlichte ich die App mit den folgenden Schritten:

1. Deploy as web app 
2. Execute the app as: Me 
3. Who has access to the app: Anyone, even anonymous 

Jetzt funktioniert die Uhr gut für mein Google Mail-Konto.

Aber meine Anforderung ist es, alle Benutzer in meiner App authentifiziert zu sehen.

Also habe ich versucht, die App zu veröffentlichen mit den folgenden Schritten:

1. Deploy as web app 
2. Execute the app as: User accessing the web app 
3. Who has access to the app: Anyone 

Nun ist die App für die Authentifizierung der Benutzer aufgefordert wird, die die Web-App-URL besucht. Die Uhr funktioniert jedoch nicht für das Google Mail-Konto des Nutzers und für mein Google Mail-Konto.

Wieder veröffentlichte ich die App mit der ersten Methode (Ausführen der App als: Me), jetzt funktioniert die Uhr für das Konto des authentifizierten Benutzers und mein Konto.

So konfigurieren Sie das Google Apps-Skript, sodass ich dem Benutzer, der meine App authentifiziert, eine Überwachung hinzufügen kann.

+0

„Aber die Uhr funktioniert nicht für die Google Mail-Konto des Benutzers und für mein Google Mail-Konto . " Kannst du das bitte weiter ausführen? Was genau funktioniert nicht? –

+0

Die Datei doPost() wurde nicht aufgerufen, wenn eine neue E-Mail zum Posteingang hinzugefügt wird. (Benutzerkonto & mein Konto) –

Antwort

0

Da Sie bereits ein Thema watch sind, ist die nächste Sache zu tun, um einzurichten, wie Sie die Benachrichtigungen erhalten (Einrichten webhooks).

Das gute an Ihrem Fall ist, dass Spencer Easton github einen Eintrag für Gmail API with Push Notification hat.

+0

Ich habe das gleiche getan. Und ich bekomme die Logs in Google Sheets für mein Konto. –

0

Ich hatte das gleiche Problem.

Haben Sie

versucht
return HtmlService.createHtmlOutput(""); 

statt

return 200; 

in der doPlot Funktion?

Vielleicht zu der Zeit Spencer Easton seinen Code geschrieben wurde return 200; noch von Apps Script erlaubt, aber jetzt doPlot sollte streng zurückgeben ein HtmlOutput Objekt