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 encuentren y modifiquen hilos, 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.

Referencia

Para obtener información detallada sobre este servicio, consulta la documentación de referencia de la API de Gmail. Al igual que 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 denunciar problemas y obtener más asistencia, consulta la guía de asistencia de Gmail.

Código de muestra

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

Cómo enumerar la información de la etiqueta

En el siguiente ejemplo, se muestra cómo enumerar toda la información de las etiquetas 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);
  }
}

Enumera los resúmenes de Recibidos

En el siguiente ejemplo, se muestra cómo enumerar los fragmentos de texto asociados a 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);
  }
}

Enumera el historial reciente

En el siguiente ejemplo, se muestra cómo registrar el historial de actividad reciente. Específicamente, este ejemplo recupera el ID del registro de historial asociado con el mensaje enviado más recientemente por el usuario y, luego, registra los IDs de todos los mensajes que cambiaron desde ese momento. Cada mensaje modificado se registra solo 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);
  }
}

Mostrar mensajes

En el siguiente ejemplo, se muestra cómo enumerar los mensajes no leídos del usuario de Gmail.

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