Trong tiện ích bổ sung của Google Workspace, bạn có thể tạo tiện ích đã liên kết với hành động. Bạn có thể sử dụng một thao tác để soạn thư nháp mới, tuỳ ý điền thông tin vào thư nháp bằ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 tin nhắn của tiện ích bổ sung để tạo thư trả lời cho thư đang mở, thư này được điền sẵn thông tin từ tiện ích bổ sung.
Khi một hành động tạo thư được kích hoạt, Gmail sẽ thực thi một hàm gọi lại để tạo và trả về thư nháp. Sau đó, Gmail sẽ hiển thị thư nháp đó trong giao diện người dùng của ứng dụng trong một cửa sổ soạn thư email chuẩn. Sau đó, người dùng có thể chỉnh sửa và gửi thư nếu cần.
Định cấu hình một hành động để tạo thư nháp
Để định cấu hình một tiện ích 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.compose
Thay vào đó, bạn có thể sử dụng phạm vi cho phép nhiều hơn, nhưng chỉ nên làm như vậy nếu phạm vi đó thực sự cần thiết.
Tạo một đối tượng
Action
và liên kết đối tượng đó với một hàm gọi lại mà bạn xác định.Gọi
setComposeAction()
của tiện ích hàm xử lý tiện ích, cung cấp đối tượngAction
và chỉ địnhComposeEmailType
.Triển khai hàm gọi lại thực thi thao tác tạo bản nháp. Hàm này được cung cấp 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 đối tượng
GmailDraft
. - Tạo đối tượng
ComposeActionResponse
bằng cách sử dụng lớpComposeActionResponseBuilder
và đối tượngGmailDraft
. - Trả về
ComposeActionResponse
đã tạo.
- Tạo đối tượng
Bạn có thể điền sẵn GmailDraft
mà bạn tạo trong hàm gọi lại bằng người nhận, chủ đề, nội dung thư và tệp đính kèm. Để điền vào thư 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ư đang mở hoặc thông tin được thu thập từ dịch vụ của 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 thư đang mở và các thông tin bổ sung khác mà bạn có thể sử dụng để điền sẵn thư nháp.
Bạn có thể tạo bản nháp dưới dạng một thư độc lập mới hoặc một thư trả lời cho thư hiện có. Việc này được kiểm soát bằng enum ComposeEmailType
được cấp cho setComposeAction()
.
Bạn có thể tạo thư 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ỳ tin nhắn nào hiện có. Bạn có thể tạo một thư nháp độc lập bằng một trong các hàm dịch vụ Gmail sau:
GmailApp.createDraft(recipient, subject, body)
GmailApp.createDraft(recipient, subject, body, options)
Thư trả lời nháp
Thư nháp trả lời là một phần của chuỗi thư hiện có. Thư nháp trả lời là thư trả lời riêng lẻ chỉ được gửi đến người gửi thư hoặc thư nháp "trả lời tất cả" được gửi đến 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 các hàm dịch vụ Gmail sau:
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 thư nháp 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 specified
// above.
return CardService.newComposeActionResponseBuilder()
.setGmailDraft(draft).build();
}