Erweiterter Gmail-Dienst

Mit dem erweiterten Gmail-Dienst können Sie die Gmail API in Apps Script verwenden. Ähnlich wie der integrierte Gmail-Dienst von Apps Script ermöglicht diese API Skripts das Suchen und Ändern von Threads, Nachrichten und Labels in einem Gmail-Postfach. In den meisten Fällen ist der integrierte Dienst einfacher zu verwenden. Dieser erweiterte Dienst bietet jedoch einige zusätzliche Funktionen und Zugriff auf detailliertere Informationen über Gmail-Inhalte.

Referenz

Ausführliche Informationen zu diesem Dienst finden Sie in der Referenzdokumentation zur Gmail API. Wie alle erweiterten Dienste in Apps Script verwendet der erweiterte Gmail-Dienst dieselben Objekte, Methoden und Parameter wie die öffentliche API. Weitere Informationen finden Sie unter So werden Methodensignaturen ermittelt.

Im Gmail-Supportleitfaden erfahren Sie, wie Sie Probleme melden und weiteren Support erhalten.

Beispielcode

Im folgenden Beispielcode wird Version 1 der API verwendet.

Labelinformationen auflisten

Das folgende Beispiel zeigt, wie alle Labelinformationen des Nutzers aufgelistet werden. Dazu gehören Name, Typ, ID und Sichtbarkeitseinstellungen des Labels.

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

Snippets des Posteingangs auflisten

Das folgende Beispiel zeigt, wie Text-Snippets, die mit den einzelnen Threads verknüpft sind, im Posteingang des Nutzers aufgelistet werden. Beachten Sie die Verwendung von Seitentokens für den Zugriff auf die vollständige Liste der Ergebnisse.

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

Letzten Verlauf auflisten

Das folgende Beispiel zeigt, wie der aktuelle Aktivitätsverlauf protokolliert wird. Insbesondere wird in diesem Beispiel die Verlaufseintrags-ID wiederhergestellt, die mit der zuletzt gesendeten Nachricht des Nutzers verknüpft ist. Anschließend werden die Nachrichten-IDs jeder Nachricht protokolliert, die sich seit diesem Zeitpunkt geändert hat. Jede geänderte Nachricht wird nur einmal protokolliert, unabhängig davon, wie viele Änderungsereignisse sich in den Verlaufseinträgen befinden. Beachten Sie die Verwendung von Seitentokens, um auf die vollständige Liste der Ergebnisse zuzugreifen.

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