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 mit dieser API Threads, Nachrichten und Labels in einem Gmail-Postfach gesucht und geändert werden. 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 zu Gmail-Inhalten.

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 Methodensignaturen ermitteln.

Informationen zum Melden von Problemen und zum Finden von Support finden Sie im Gmail-Supportleitfaden.

Beispielcode

Im folgenden Beispielcode wird Version 1 der API verwendet.

Labelinformationen auflisten

Das folgende Beispiel zeigt, wie Sie alle Labelinformationen des Nutzers auflisten. Dazu gehören der Labelname, der Typ, die ID und die Sichtbarkeitseinstellungen.

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 Sie Text-Snippets auflisten, die mit den einzelnen Threads 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 der zuletzt gesendeten Nachricht des Nutzers abgerufen und dann die Nachrichten-IDs aller Nachrichten protokolliert, die sich seitdem geändert haben. Jede geänderte Nachricht wird nur einmal protokolliert, unabhängig davon, wie viele Änderungsereignisse in den Verlaufsdatensätzen enthalten sind. 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);
  }
}

Nachrichten auflisten

Das folgende Beispiel zeigt, wie die ungelesenen Nachrichten des Gmail-Nutzers aufgelistet werden.

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