Trong một tiện ích bổ sung, bạn có thể tạo các tiện ích có hành động được liên kết. Bạn có thể dùng một thao tác để soạn thảo email mới, có thể điền sẵn thông tin bằng cách sử dụng thông tin đã nhập vào giao diện người dùng của tiện ích bổ sung hoặc thông tin từ một thư đang mở. Ví dụ: bạn có thể có một nút trong giao diện người dùng thông báo của tiện ích bổ sung để tạo một thư trả lời cho thư hiện đang mở, trong đó có sẵn thông tin từ tiện ích bổ sung.
Khi một thao tác tạo thư được kích hoạt, Gmail sẽ thực thi một hàm callback để tạo và trả về bản nháp. Sau đó, Gmail sẽ hiển thị bản nháp đó trong giao diện người dùng ở cửa sổ soạn thư tiêu chuẩn. Người dùng có thể chỉnh sửa và gửi bản nháp đó nếu cần.
Định cấu hình một thao tác để tạo tin nhắn nháp
Để định cấu hình một tiện ích nhằm bắt đầu thao tác tạo bản nháp khi được chọn, bạn phải làm như sau:
Đảm bảo tệp kê khai của bạn có phạm vi
action.compose:https://www.googleapis.com/auth/gmail.addons.current.action.composeBạn có thể sử dụng một phạm vi cho phép rộng hơn, nhưng chỉ nên làm như vậy nếu phạm vi đó hoàn toàn cần thiết.
Tạo một đối tượng
Actionvà liên kết đối tượng đó với một hàm callback mà bạn xác định.Gọi hàm trình xử lý tiện ích
setComposeActioncủa tiện ích, cung cấp cho hàm này đối tượngActionvà chỉ địnhComposeEmailType.Triển khai hàm callback thực thi thao tác tạo bản nháp. Hàm này nhận một đối tượng sự kiện làm đối số. Hàm callback phải thực hiện những việc sau:
- Tạo một đối tượng
GmailDraft. - Tạo một đối tượng
ComposeActionResponsebằng cách sử dụng lớpComposeActionResponseBuildervà đối tượngGmailDraft. - Trả về
ComposeActionResponseđã tạo.
- Tạo một đối tượng
Bạn có thể điền sẵn GmailDraft mà bạn tạo trong hàm callback bằng người nhận, tiêu đề, nội dung thư và tệp đính kèm. Để điền vào bản nháp, dữ liệu có thể đến từ bất kỳ nguồn nào, nhưng thường là từ thông tin được cung cấp cho chính tiện ích bổ sung, thông tin trong thư mở hoặc thông tin thu thập được từ dịch vụ bên thứ ba. Đối tượng sự kiện được truyền đến hàm gọi lại chứa mã thông báo mở và thông tin bổ sung khác mà bạn có thể dùng để điền sẵn bản nháp.
Bạn có thể tạo bản nháp dưới dạng một tin nhắn độc lập mới hoặc một câu trả lời cho tin nhắn hiện có. Việc này được kiểm soát bằng enum ComposeEmailType được cung cấp cho setComposeAction.
Bạn có thể tạo bản nháp trả lời dưới dạng thư trả lời riêng lẻ hoặc thư "trả lời tất cả".
Bản thảo độc lập
Bản nháp độc lập sẽ bắt đầu một chuỗi tin nhắn mới và không phải là thư trả lời cho bất kỳ thư nào hiện có. Bạn có thể tạo bản nháp độc lập bằng một trong các chức năng sau đây của dịch vụ Gmail:
GmailApp.createDraft(recipient, subject, body)GmailApp.createDraft(recipient, subject, body, options)
Thư trả lời nháp
Thư trả lời nháp là một phần của chuỗi thư hiện có. Thư trả lời nháp là thư trả lời riêng lẻ chỉ được gửi cho người gửi thư hoặc thư nháp "trả lời tất cả" được gửi cho tất cả những người nhận được thư đó. Bạn có thể tạo thư nháp để trả lời bằng một trong những hàm dịch vụ Gmail sau đây:
GmailMessage.createDraftReply(body)GmailMessage.createDraftReply(body, options)GmailMessage.createDraftReplyAll(body)GmailMessage.createDraftReplyAll(body, options)GmailThread.createDraftReply(body)GmailThread.createDraftReply(body, options)GmailThread.createDraftReplyAll(body)GmailThread.createDraftReplyAll(body, options)
Ví dụ:
Đoạn mã sau đây cho biết cách chỉ định một thao tác tạo bản nháp thư trả lời cho một nút.
var composeAction = CardService.newAction()
.setFunctionName('createReplyDraft');
var composeButton = CardService.newTextButton()
.setText('Compose Reply')
.setComposeAction(
composeAction,
CardService.ComposedEmailType.REPLY_AS_DRAFT);
// ...
/**
* Creates a draft email (with an attachment and inline image)
* as a reply to an existing message.
* @param {Object} e An event object passed by the action.
* @return {ComposeActionResponse}
*/
function createReplyDraft(e) {
// Activate temporary Gmail scopes, in this case to allow
// a reply to be drafted.
var accessToken = e.gmail.accessToken;
GmailApp.setCurrentMessageAccessToken(accessToken);
// Creates a draft reply.
var messageId = e.gmail.messageId;
var message = GmailApp.getMessageById(messageId);
var draft = message.createDraftReply('',
{
htmlBody: "Kitten! <img src='cid:kitten'/>",
attachments: [
UrlFetchApp.fetch('https://example.com/images/myDog.jpg')
.getBlob()
],
inlineImages: {
"kitten": UrlFetchApp.fetch('https://example.com/images/myKitten.jpg')
.getBlob()
}
}
);
// Return a built draft response. This causes Gmail to present a
// compose window to the user, pre-filled with the content previously
// specified.
return CardService.newComposeActionResponseBuilder()
.setGmailDraft(draft).build();
}