1

Une brève description du projet: Je souhaite basculer l'option de transfert d'e-mail dans les paramètres d'un de mes comptes gmail via un script google. Ce sera une fonction que je voudrais appeler tous les soirs entre certaines heures de transmission de mon courrier de main_email @ gmail à secondary_email @ gmail.Comment activer le transfert d'e-mails avec Google Script

J'ai du mal à trouver le moyen le plus simple de passer à travers un script google. La solution la plus simple semble être décrite ici où ils utilisent une requête HTTP. Cependant, en toute honnêteté, je ne comprends pas complètement comment tout cela fonctionne, encore moins si c'est le moyen le plus simple.

https://developers.google.com/gmail/api/v1/reference/users/settings/updateAutoForwarding

Le code que j'essaie de courir sur le compte gmail pour activer/désactiver le transfert d'email est le suivant:

function updateForwarding() { 
    var userID = "[email protected]" 
    var response = UrlFetchApp.fetch("https://www.googleapis.com/gmail/v1/users/" + userID + "/settings/autoForwarding", { 
     method: 'put', 
     enabled: true, 
     emailAddress: "[email protected]", 
     disposition: "leaveInInbox" 
    }); 

    Logger.log(response.getContentText()); 

} 

Cependant, j'obtiens l'erreur suivante:

Request failed for https://www.googleapis.com/gmail/v1/users/[email protected]/settings/autoForwarding returned code 401. Truncated server response: { "error": { "errors": [ { "domain": "global", "reason": "required", "message": "Login Required", "locationType": "header", ... (use muteHttpExceptions option to examine full response) (line 4, file "Code")

Je reconnais que cela montre que je dois fournir des informations d'identification pour faire la demande, mais je ne comprends pas comment je ferais cela. J'ai lu sur le tutoriel (https://developers.google.com/gmail/api/auth/about-auth) J'ai besoin d'autoriser mon application avec Gmail et obtenir une clé API, donc je suis allé à la console google developers pour créer cela. Cependant, je n'ai aucune idée de comment authentifier ou passer l'appel via un script Google après quelques heures de google.

Voici la clé secrète et m'a donné: enter image description here

Est-ce la solution la plus simple pour activer la redirection de gmail? Si oui, comment authentifier mon appel? Si ce n'est pas le cas, quelle est la solution la plus simple pour activer/désactiver mon transfert Gmail?

Répondre

0

Comme indiqué dans la section d'autorisation de https://developers.google.com/gmail/api/v1/reference/users/settings/updateAutoForwarding, vous devez utiliser OAuth avec les étendues données pour effectuer cet appel, pas seulement une clé API. Vous semblez avoir un ID de client, mais vous devez le brancher dans une bibliothèque pour gérer le processus OAuth pour vous. Le processus OAuth vous donnera alors un jeton de Porteur à ajouter à votre requête (bien que la plupart des bibliothèques OAuth géreront cela pour vous).

Il semble que https://github.com/googlesamples/apps-script-oauth2 soit la méthode actuellement recommandée pour ce faire si vous utilisez UrlFetchApp (basé sur https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app).

1

Vous devez passer des jetons OAuth dans les informations d'en-tête

function updateForwarding() { 
     var userID = "[email protected]"; 
     var header = { 
     Authorization: 'Bearer ' + ScriptApp.getOAuthToken(), 
     } 
     var response = UrlFetchApp.fetch("https://www.googleapis.com/gmail/v1/users/" + userID + "/settings/autoForwarding", { 
      method: 'put', 
      enabled: true, 
      headers: header, 
      emailAddress: "[email protected]", 
      disposition: "leaveInInbox" 
     }); 

     Logger.log(response.getContentText()); 

    } 
+0

Cela ne fonctionne pas, mais je m'y suis une autre erreur cette fois-ci! Erreur 403, autorisations insuffisantes. En regardant d'autres articles SO, il semble que la solution la plus courante est de changer l'ID utilisateur en 'moi', mais cela entraîne toujours la même erreur. Une idée de ce que je devrais faire pour réparer ça? –