Service avancé de Gmail

Le service Gmail avancé 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 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.

Référence

Pour en savoir plus 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 ci-dessous 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) {
        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 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 enregistré 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) {
        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);
  }
}

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}`);
  }
}