Service avancé de Gmail

Le service Advanced Gmail vous permet d'utiliser l'API Gmail dans Apps Script. Tout comme le service Gmail intégré d'Apps Script, cette API permet aux scripts de rechercher et de modifier des fils de discussion, des messages et des libellés dans une boîte aux lettres Gmail. Dans la plupart des cas, le service intégré est plus facile à utiliser, mais ce service avancé fournit quelques fonctionnalités supplémentaires et donne accès à des informations plus détaillées sur le contenu Gmail.

Reference

Pour plus d'informations sur ce service, consultez la documentation de référence de l'API Gmail. Comme tous les services avancés d'Apps Script, le service avancé de Gmail utilise les mêmes objets, méthodes et paramètres que l'API publique. Pour en savoir plus, consultez la section Comment les signatures de méthode sont-elles déterminées ?

Pour signaler des problèmes et obtenir de l'aide, consultez le guide d'assistance Gmail.

Exemple de code

L'exemple de code ci-dessous utilise la version 1 de l'API.

Répertorier les informations sur les libellés

L'exemple suivant montre comment répertorier toutes les informations de libellé de l'utilisateur. Cela inclut le nom, le type, l'ID et les paramètres de visibilité du libellé.

advanced/gmail.gs
/**
 * Lists the user's labels, including name, type,
 * ID and visibility information.
 */
function listLabelInfo() {
  try {
    const response =
      Gmail.Users.Labels.list('me');
    for (let i = 0; i < response.labels.length; i++) {
      const label = response.labels[i];
      console.log(JSON.stringify(label));
    }
  } catch (err) {
    console.log(err);
  }
}

Extraits de la boîte de réception de la liste

L'exemple suivant montre comment répertorier des extraits de texte associés à chaque fil de discussion dans la boîte de réception de l'utilisateur. Notez l'utilisation de jetons de page pour accéder à la liste complète des résultats.

advanced/gmail.gs
/**
 * Lists, for each thread in the user's Inbox, a
 * snippet associated with that thread.
 */
function listInboxSnippets() {
  try {
    let pageToken;
    do {
      const threadList = Gmail.Users.Threads.list('me', {
        q: 'label:inbox',
        pageToken: pageToken
      });
      if (threadList.threads && threadList.threads.length > 0) {
        threadList.threads.forEach(function(thread) {
          console.log('Snippet: %s', thread.snippet);
        });
      }
      pageToken = threadList.nextPageToken;
    } while (pageToken);
  } catch (err) {
    console.log(err);
  }
}

Lister l'historique récent

L'exemple suivant montre comment consigner l'historique des activités récentes. Plus précisément, cet exemple récupère l'ID d'enregistrement d'historique associé au dernier message envoyé par l'utilisateur, puis consigne les ID de chaque message qui a été modifié depuis. Chaque message modifié n'est consigné qu'une seule fois, quel que soit le nombre d'événements de modification figurant dans les enregistrements de l'historique. Notez l'utilisation de jetons de page pour accéder à la liste complète des résultats.

advanced/gmail.gs
/**
 * Gets a history record ID associated with the most
 * recently sent message, then logs all the message IDs
 * that have changed since that message was sent.
 */
function logRecentHistory() {
  try {
    // Get the history ID associated with the most recent
    // sent message.
    const sent = Gmail.Users.Threads.list('me', {
      q: 'label:sent',
      maxResults: 1
    });
    if (!sent.threads || !sent.threads[0]) {
      console.log('No sent threads found.');
      return;
    }
    const historyId = sent.threads[0].historyId;

    // Log the ID of each message changed since the most
    // recent message was sent.
    let pageToken;
    const changed = [];
    do {
      const recordList = Gmail.Users.History.list('me', {
        startHistoryId: historyId,
        pageToken: pageToken
      });
      const history = recordList.history;
      if (history && history.length > 0) {
        history.forEach(function(record) {
          record.messages.forEach(function(message) {
            if (changed.indexOf(message.id) === -1) {
              changed.push(message.id);
            }
          });
        });
      }
      pageToken = recordList.nextPageToken;
    } while (pageToken);

    changed.forEach(function(id) {
      console.log('Message Changed: %s', id);
    });
  } catch (err) {
    console.log(err);
  }
}