Servizio Gmail avanzato

Il servizio Gmail avanzato ti consente di utilizzare l'API Gmail in Apps Script. Molto simile al 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 usare, 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, consulta Come vengono determinate le firme dei metodi.

Per segnalare problemi e trovare altra assistenza, consulta la guida all'assistenza di Gmail.

Codice di esempio

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

Elenca le informazioni sulle etichette

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 gli snippet della Posta in arrivo

Il seguente esempio mostra come elencare gli snippet di testo associati a ogni thread della Posta in arrivo dell'utente. Tieni presente l'utilizzo dei 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 la cronologia recente

Il seguente esempio mostra come registrare la cronologia delle attività recenti. Nello specifico, questo esempio recupera l'ID record della cronologia associato al messaggio inviato più di recente dall'utente e poi registra gli ID di ogni messaggio che è cambiato da quel momento. Ogni messaggio modificato viene registrato solo una volta, indipendentemente dal numero di eventi di modifica nei record della cronologia. Tieni presente 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);
  }
}