Расширенный сервис Gmail

Расширенная служба Gmail позволяет использовать API Gmail в Apps Script. Подобно встроенной службе Gmail в Apps Script, эта API позволяет скриптам находить и изменять потоки, сообщения и метки в почтовом ящике Gmail. В большинстве случаев встроенная служба проще в использовании, но эта расширенная служба предоставляет несколько дополнительных функций и доступ к более подробной информации о содержимом Gmail.

Ссылка

Подробную информацию об этой службе см. в справочной документации по API Gmail. Как и все расширенные службы в Apps Script, расширенная служба Gmail использует те же объекты, методы и параметры, что и публичный API. Для получения дополнительной информации см. Как определяются сигнатуры методов .

Чтобы сообщить о проблемах и найти другую поддержку, см. руководство по поддержке Gmail .

Пример кода

В примере кода ниже используется версия API 1 .

Список информации этикетки

Следующий пример демонстрирует, как вывести список всей информации о метках пользователя. Сюда входят имя метки, тип, идентификатор и настройки видимости.

расширенный/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);
  }
}

Список фрагментов входящих сообщений

Следующий пример демонстрирует, как перечислить фрагменты текста, связанные с каждой веткой в ​​папке «Входящие» пользователя. Обратите внимание на использование токенов страницы для доступа к полному списку результатов.

расширенный/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);
  }
}

Список недавней истории

Следующий пример демонстрирует, как регистрировать историю недавней активности. В частности, этот пример восстанавливает идентификатор записи истории, связанный с последним отправленным пользователем сообщением, а затем регистрирует идентификаторы сообщений для каждого сообщения, которое было изменено с того времени. Каждое измененное сообщение регистрируется только один раз, независимо от того, сколько событий изменения содержится в записях истории. Обратите внимание на использование токенов страницы для доступа к полному списку результатов.

расширенный/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);
  }
}

Список сообщений

В следующем примере показано, как составить список непрочитанных сообщений пользователя Gmail.

расширенный/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}`);
  }
}