Servizio Gmail avanzato

Il servizio Gmail avanzato ti 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 un Casella di posta di Gmail. Nella maggior parte dei casi il servizio integrato è più facile da usare, ma il servizio avanzato offre alcune funzioni extra e l'accesso a informazioni informazioni sui contenuti di Gmail.

Riferimento

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

Per segnalare problemi e ricevere ulteriore assistenza, consulta le Guida di assistenza per Gmail.

Codice di esempio

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

Elenca informazioni sulle etichette

L'esempio seguente mostra come elencare tutte le informazioni sulle etichette dell'utente. Sono incluse le impostazioni relative a nome, tipo, ID e 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 della posta in arrivo

L'esempio seguente mostra come elencare gli snippet di testo associati a ogni thread nella Posta in arrivo dell'utente. Nota l'utilizzo di token di pagina per accedere l'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. Nello specifico, questo esempio recupera l'ID del record della cronologia associato all'elemento inviato più di recente dall'utente e registra gli ID messaggio di ogni che è cambiato da allora. Ogni messaggio modificato viene registrato solo una volta sola, indipendentemente da quanti eventi di modifica ci siano nei record della cronologia. Nota come l'utilizzo di 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);
  }
}