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 una casella di posta Gmail. Nella maggior parte dei casi, il servizio integrato è più facile da usare, ma questo servizio avanzato fornisce 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 in 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 altro supporto, consulta la Guida all'assistenza Gmail.

Codice di esempio

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

Elencare le informazioni sulle etichette

Il seguente esempio mostra come elencare tutte le informazioni sulle etichette dell'utente. Sono inclusi nome, tipo, ID e 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);
  }
}

Elencare gli snippet della posta in arrivo

Il seguente esempio mostra come elencare gli snippet di testo associati a ogni thread nella posta in arrivo dell'utente. Nota 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 dell'attività recente. Nello specifico, questo esempio recupera l'ID record della cronologia associato al messaggio inviato più di recente dall'utente, quindi registra gli ID messaggio di ogni messaggio modificato da quel momento. Ogni messaggio modificato viene registrato una sola volta, indipendentemente dal numero di eventi di modifica nei record della cronologia. Nota l'utilizzo 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);
  }
}

Elenco di messaggi

Il seguente esempio mostra come elencare i messaggi non letti dell'utente 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}`);
  }
}