Erweiterter Gmail-Dienst

Mit dem erweiterten Gmail-Dienst können Sie die Gmail API in Apps Script verwenden. Ähnlich wie beim integrierten Gmail-Dienst von Apps Script können Scripts mit dieser API Threads, Nachrichten und Labels in einem Gmail-Posteingang suchen und ändern. In den meisten Fällen ist der integrierte Dienst einfacher zu verwenden. Der erweiterte Dienst bietet jedoch einige zusätzliche Funktionen und Zugriff auf detailliertere Informationen zu Gmail-Inhalten.

Referenz

Ausführliche Informationen zu diesem Dienst finden Sie in der Referenzdokumentation für die 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 Methodensignaturen bestimmen.

Informationen zum Melden von Problemen und zum Erhalt anderer Supportoptionen finden Sie im Gmail-Supportleitfaden.

Beispielcode

Im folgenden Beispielcode wird Version 1 der API verwendet.

Labelinformationen auflisten

Im folgenden Beispiel wird gezeigt, wie alle Labelinformationen des Nutzers aufgelistet werden. Dazu gehören der Name, der Typ, die ID und die 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);
  }
}

Posteingangs-Snippets auflisten

Im folgenden Beispiel wird gezeigt, wie Text-Snippets aufgelistet werden, die mit jedem Thread im Posteingang des Nutzers verknüpft sind. Beachten Sie, dass Seitentokens verwendet werden, um auf die vollständige Liste der Ergebnisse zuzugreifen.

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 Verlauf der letzten Aktivitäten protokolliert wird. In diesem Beispiel wird die Verlaufsdatensatz-ID abgerufen, die mit der zuletzt gesendeten Nachricht des Nutzers verknüpft ist. Anschließend werden die Nachrichten-IDs aller Nachrichten protokolliert, die sich seit diesem Zeitpunkt geändert haben. Jede geänderte Nachricht wird nur einmal protokolliert, unabhängig davon, wie viele Änderungsereignisse in den Verlaufsdaten vorhanden sind. Beachten Sie, dass Seitentokens verwendet werden, 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);
  }
}