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 çok benzer şekilde bu API de komut dosyalarının bir Gmail posta kutusundaki ileti dizilerini, iletileri ve etiketleri bulup değiştirmesine olanak tanır. Yerleşik hizmetin kullanımı çoğu durumda 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 referans belgelerini inceleyin. 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ı makaleye bakın.

Sorunları bildirmek ve diğer destek seçeneklerini öğrenmek için Gmail destek rehberini inceleyin.

Örnek kod

Aşağıdaki örnek kod API'nin 1. sürümünü kullanmaktadır.

Etiket bilgilerini listeleme

Aşağıdaki örnekte, kullanıcının tüm etiket bilgilerinin nasıl listeleneceği gösterilmektedir. Buna etiket adı, türü, kimliği ve görünürlük ayarları da 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 örnek, kullanıcının Gelen Kutusundaki her bir ileti dizisiyle ilişkili metin snippet'lerinin nasıl listeleneceğini gösterir. 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);
  }
}

Yakın geçmişi listeleme

Aşağıdaki örnekte son etkinlik geçmişinin nasıl kaydedileceği gösterilmektedir. Özellikle, bu örnek kullanıcının en son gönderdiği mesajla ilişkili geçmiş kaydı kimliğini kurtarır ve ardından o zamandan beri değişen her iletinin ileti kimliklerini günlüğe kaydeder. Geçmiş kayıtlarında kaç değişiklik etkinliği olursa olsun, değiştirilen her mesaj yalnızca bir kez günlüğe kaydedilir. Tam sonuç 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);
  }
}