Service avancé de Gmail

pour accéder à des fonctionnalités supplémentaires et à des informations détaillées de l'API Gmail.

Le service Gmail avancé vous permet d'utiliser l'API Gmail dans Google Apps Script. Comme le service Gmail intégré d'Apps Script, cette API permet aux scripts de trouver 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é offre quelques fonctionnalités supplémentaires et permet d'accéder à des informations plus détaillées sur le contenu Gmail.

Il s'agit d'un service avancé qui doit être activé avant utilisation.

Référence

Pour obtenir des informations détaillées 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 Gmail avancé utilise les mêmes objets, méthodes et paramètres que l'API publique. Pour en savoir plus, consultez Déterminer les signatures de méthode.

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

Exemple de code

L'exemple de code suivant utilise la version 1 de l'API.

Lister les informations sur les libellés

L'exemple suivant montre comment lister toutes les informations sur les libellés 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);
  }
}

Lister les extraits de boîte de réception

L'exemple suivant montre comment lister les 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) {
        for (const thread of threadList.threads) {
          console.log(`Snippet: ${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 de l'enregistrement de l'historique associé au dernier message envoyé par l'utilisateur, puis enregistre les ID de tous les messages qui ont été modifiés depuis. Chaque message modifié n'est consigné qu'une seule fois, quel que soit le nombre d'événements de modification dans 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) {
        for (const record of history) {
          for (const message of record.messages) {
            if (changed.indexOf(message.id) === -1) {
              changed.push(message.id);
            }
          }
        }
      }
      pageToken = recordList.nextPageToken;
    } while (pageToken);

    for (const id of changed) {
      console.log("Message Changed: %s", id);
    }
  } catch (err) {
    console.log(err);
  }
}

Répertorier des messages

L'exemple suivant montre comment lister les messages non lus de l'utilisateur Gmail.

advanced/gmail.gs
/**
 * Lists unread messages in the user's inbox using the advanced Gmail service.
 */
function listMessages() {
  // The special value 'me' indicates the authenticated user.
  const userId = "me";

  // Define optional parameters for the request.
  const options = {
    maxResults: 10, // Limit the number of messages returned.
    q: "is:unread", // Search for unread messages.
  };

  try {
    // Call the Gmail.Users.Messages.list method.
    const response = Gmail.Users.Messages.list(userId, options);
    const messages = response.messages;
    console.log("Unread Messages:");

    for (const message of messages) {
      console.log(`- Message ID: ${message.id}`);
    }
  } catch (err) {
    // Log any errors to the Apps Script execution log.
    console.log(`Failed with error: ${err.message}`);
  }
}