Service avancé de Gmail

Le service Gmail avancé vous permet d'utiliser l'API Gmail dans Apps Script. À l'instar du 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 un Gmail. Dans la plupart des cas, le service intégré est plus facile à utiliser, mais cela le service avancé fournit des fonctionnalités supplémentaires et l'accès à des informations des informations sur le contenu Gmail.

Référence

Pour en savoir plus sur ce service, consultez le documentation de référence de l'API Gmail. Comme tous les services avancés d'Apps Script, le service Gmail avancé utilise le 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 les 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 étiquettes

L'exemple suivant montre comment répertorier toutes les informations du libellé de l'utilisateur. y compris 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 la boîte de réception

L'exemple suivant montre comment répertorier 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);
  }
}

Afficher l'historique récent

L'exemple suivant montre comment enregistrer l'historique des activités récentes. Plus précisément, cet exemple récupère l'ID d'enregistrement d'historique associé à le dernier message envoyé par l'utilisateur, puis consigne les identifiants de tous les messages qui a changé depuis. Chaque message modifié n'est consigné une seule fois, quel que soit le nombre d'événements de modification enregistrés dans l'historique. Notez le 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);
  }
}