Servicio avanzado de Gmail

El servicio avanzado de Gmail te permite usar la API de Gmail en Apps Script. Al igual que el servicio integrado de Gmail de Apps Script, esta API permite que las secuencias de comandos busquen y modifiquen conversaciones, mensajes y etiquetas en un buzón de Gmail. En la mayoría de los casos, el servicio integrado es más fácil de usar, pero este servicio avanzado proporciona algunas funciones adicionales y acceso a información más detallada sobre el contenido de Gmail.

Reference

Para obtener información detallada sobre este servicio, consulta la documentación de referencia de la API de Gmail. Como todos los servicios avanzados de Apps Script, el servicio avanzado de Gmail usa los mismos objetos, métodos y parámetros que la API pública. Para obtener más información, consulta Cómo se determinan las firmas de métodos.

Para informar problemas y encontrar otro tipo de asistencia, consulta la guía de asistencia de Gmail.

Código de muestra

El siguiente código de muestra usa la versión 1 de la API.

Mostrar información de las etiquetas

En el siguiente ejemplo, se muestra cómo enumerar toda la información de etiqueta del usuario. Esto incluye el nombre, el tipo, el ID y la configuración de visibilidad de la etiqueta.

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

Enumerar fragmentos de Recibidos

En el siguiente ejemplo, se muestra cómo enumerar fragmentos de texto asociados con cada conversación en la bandeja de entrada del usuario. Observa el uso de tokens de página para acceder a la lista completa de resultados.

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

Mostrar historial reciente

En el siguiente ejemplo, se muestra cómo registrar el historial de actividad reciente. Específicamente, en este ejemplo se recupera el ID de registro de historial asociado con el último mensaje enviado del usuario y, luego, se registran los IDs de cada mensaje que ha cambiado desde ese momento. Cada mensaje modificado solo se registra una vez, sin importar cuántos eventos de cambio haya en los registros del historial. Observa el uso de tokens de página para acceder a la lista completa de resultados.

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