Dịch vụ Gmail nâng cao

Dịch vụ Gmail nâng cao cho phép bạn sử dụng API Gmail trong Apps Script. Tương tự như dịch vụ Gmail tích hợp của Apps Script, API này cho phép tập lệnh tìm và sửa đổi các chuỗi, thư và nhãn trong hộp thư Gmail. Trong hầu hết các trường hợp, dịch vụ tích hợp sẵn sẽ dễ sử dụng hơn, nhưng dịch vụ nâng cao này cung cấp thêm một số tính năng và quyền truy cập vào thông tin chi tiết hơn về nội dung trên Gmail.

Tài liệu tham khảo

Để biết thông tin chi tiết về dịch vụ này, hãy xem tài liệu tham khảo cho Gmail API. Giống như tất cả các dịch vụ nâng cao trong Apps Script, dịch vụ Gmail nâng cao cũng sử dụng các đối tượng, phương thức và tham số giống như API công khai. Để biết thêm thông tin, hãy xem bài viết Cách xác định chữ ký phương thức.

Để báo cáo vấn đề và tìm thông tin hỗ trợ khác, hãy xem hướng dẫn hỗ trợ của Gmail.

Mã mẫu

Mã mẫu bên dưới sử dụng phiên bản 1 của API.

Liệt kê thông tin về nhãn

Ví dụ sau đây minh hoạ cách liệt kê tất cả thông tin nhãn của người dùng. Trong đó có tên nhãn, loại, mã nhận dạng và chế độ hiển thị.

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

Liệt kê các đoạn trích trong hộp thư đến

Ví dụ sau đây minh hoạ cách liệt kê các đoạn văn bản được liên kết với từng chuỗi trong hộp thư đến của người dùng. Lưu ý việc sử dụng mã thông báo trang để truy cập vào danh sách đầy đủ các kết quả.

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

Liệt kê nhật ký gần đây

Ví dụ sau đây minh hoạ cách ghi nhật ký nhật ký hoạt động gần đây. Cụ thể, ví dụ này khôi phục mã bản ghi nhật ký được liên kết với tin nhắn gần đây nhất mà người dùng đã gửi, sau đó ghi lại mã tin nhắn của mọi tin nhắn đã thay đổi kể từ thời điểm đó. Mỗi thông báo thay đổi chỉ được ghi nhật ký một lần, bất kể có bao nhiêu sự kiện thay đổi trong bản ghi nhật ký. Lưu ý việc sử dụng mã thông báo trang để truy cập vào danh sách đầy đủ các kết quả.

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

Liệt kê thông báo

Ví dụ sau đây minh hoạ cách liệt kê các thư chưa đọc của người dùng 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}`);
  }
}