Gelişmiş Gmail Hizmeti

Gelişmiş Gmail hizmeti, Apps Komut Dosyası'nda Gmail API'yi kullanmanıza olanak tanır. Apps Komut Dosyası'nın yerleşik Gmail hizmetine benzer şekilde bu API, komut dosyalarının Gmail posta kutusundaki ileti dizilerini, iletileri ve etiketleri bulup değiştirmesine olanak tanır. Çoğu durumda, yerleşik hizmetin kullanımı daha kolaydır. Ancak bu gelişmiş hizmet, birkaç ek özellik ve Gmail içeriği hakkında daha ayrıntılı bilgilere erişim sağlar.

Referans

Bu hizmet hakkında ayrıntılı bilgi için Gmail API'nin referans dokümanlarına bakın. Apps Komut Dosyası'ndaki tüm gelişmiş hizmetler gibi, gelişmiş Gmail hizmeti de herkese açık API ile aynı nesneleri, yöntemleri ve parametreleri kullanır. Daha fazla bilgi için Yöntem imzaları nasıl belirlenir? başlıklı makaleyi inceleyin.

Sorunları bildirmek ve diğer destek seçeneklerini öğrenmek için Gmail Destek Kılavuzu'na bakın.

Örnek kod

Aşağıdaki örnek kodda API'nin 1. sürümü kullanılmaktadır.

Etiket bilgilerini listeleme

Aşağıdaki örnekte, kullanıcının tüm etiket bilgilerinin nasıl listeleneceği gösterilmektedir. Etiket adı, türü, kimliği ve görünürlük ayarları buna dahildir.

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

Gelen kutusu snippet'lerini listeleme

Aşağıdaki örnekte, kullanıcının gelen kutusundaki her ileti dizisiyle ilişkili metin snippet'lerinin nasıl listeleneceği gösterilmektedir. Sonuçların tam listesine erişmek için sayfa jetonlarının kullanıldığına dikkat edin.

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

Son geçmişi listeleme

Aşağıdaki örnekte, son etkinlik geçmişinin nasıl kaydedileceği gösterilmektedir. Bu örnekte, kullanıcının en son gönderdiği iletiyle ilişkili geçmiş kaydı kimliği kurtarılır ve ardından o zamandan beri değişen tüm iletilerin ileti kimlikleri kaydedilir. Geçmiş kayıtlarında kaç değişiklik etkinliği olursa olsun, değiştirilen her ileti yalnızca bir kez günlüğe kaydedilir. Sonuçların tam listesine erişmek için sayfa jetonlarının kullanıldığına dikkat edin.

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

Mesajları listeleme

Aşağıdaki örnekte, Gmail kullanıcısının okunmamış iletilerinin nasıl listeleneceği gösterilmektedir.

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