Servizio Gmail avanzato

Il servizio Gmail avanzato consente di utilizzare l'API Gmail in Apps Script. Proprio come il servizio Gmail integrato di Apps Script, questa API consente agli script di trovare e modificare thread, messaggi ed etichette in una casella di posta Gmail. Nella maggior parte dei casi, il servizio integrato è più facile da utilizzare, ma questo servizio avanzato offre alcune funzionalità aggiuntive e l'accesso a informazioni più dettagliate sui contenuti di Gmail.

Riferimento

Per informazioni dettagliate su questo servizio, consulta la documentazione di riferimento per l'API Gmail. Come tutti i servizi avanzati di Apps Script, il servizio Gmail avanzato utilizza gli stessi oggetti, metodi e parametri dell'API pubblica. Per ulteriori informazioni, vedi Come vengono determinate le firme dei metodi.

Per segnalare problemi e trovare ulteriore supporto, consulta la guida di assistenza di Gmail.

Codice campione

Il codice di esempio riportato di seguito utilizza la versione 1 dell'API.

Elenca informazioni etichetta

L'esempio seguente mostra come elencare tutte le informazioni sulle etichette dell'utente. Sono inclusi il nome, il tipo, l'ID e le impostazioni di visibilità dell'etichetta.

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

Elenca snippet casella di posta

L'esempio seguente mostra come elencare gli snippet di testo associati a ogni thread nella Posta in arrivo dell'utente. Nota l'uso di token di pagina per accedere all'elenco completo dei risultati.

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

Elenca cronologia recente

L'esempio seguente mostra come registrare la cronologia delle attività recenti. In particolare, questo esempio recupera l'ID record della cronologia associato al messaggio inviato più di recente dall'utente e registra gli ID messaggio di ogni messaggio modificato da quel momento. Ogni messaggio modificato viene registrato una sola volta, indipendentemente da quanti eventi di modifica sono presenti nei record della cronologia. Osserva l'uso dei token di pagina per accedere all'elenco completo dei risultati.

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