Gelişmiş Gmail Hizmeti

Gelişmiş Gmail hizmeti, Apps Script'te 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 kutusunda 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 sunar.

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 Metod imzaları nasıl belirlenir? başlıklı makaleyi inceleyin.

Sorunları bildirmek ve başka destek almak için Gmail destek kılavuzuna göz atı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 kutusunda 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. Daha açık belirtmek gerekirse bu örnek, kullanıcının en son gönderdiği mesajla ilişkili geçmiş kaydı kimliğini kurtarır ve ardından bu tarihten sonra değişen her mesajın mesaj kimliklerini kaydeder. 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);
  }
}