في إحدى إضافات Google Workspace، يمكنك إنشاء تطبيقات مصغّرة تتضمّن إجراءات مرتبطة. يمكنك استخدام إجراء لإنشاء مسودات رسائل إلكترونية جديدة، مع إمكانية ملء هذه المسودات باستخدام المعلومات التي تم إدخالها في واجهة مستخدم الإضافة أو المعلومات الواردة من رسالة مفتوحة. على سبيل المثال، يمكنك إضافة زر في واجهة مستخدم الرسائل الخاصة بالإضافة لإنشاء ردّ على الرسالة المفتوحة حاليًا مع تعبئة المعلومات مسبقًا من الإضافة.
عندما يتم تشغيل إجراء يؤدي إلى إنشاء رسائل، ينفّذ Gmail دالة رد الاتصال لإنشاء المسودة وعرضها. يعرض Gmail بعد ذلك المسودّة في واجهة المستخدم ضمن نافذة إنشاء رسالة إلكترونية عادية، ويمكن للمستخدم تعديلها وإرسالها حسب الحاجة.
ضبط إجراء لإنشاء مسودة رسالة
لضبط إحدى الأدوات لبدء إجراء إنشاء مسودة عند تحديدها، عليك تنفيذ ما يلي:
تأكَّد من أنّ بيان التطبيق يتضمّن نطاق
action.compose
:https://www.googleapis.com/auth/gmail.addons.current.action.compose
يمكنك بدلاً من ذلك استخدام نطاق أكثر تساهلاً، ولكن يجب ألا تفعل ذلك إلا إذا كان هذا النطاق ضروريًا للغاية.
أنشئ عنصر
Action
واربطه بدالة ردّ اتصال تحدّدها.استدعِ
setComposeAction()
دالة معالج الأداة الخاصة بالأداة، مع توفير الكائنAction
وتحديدComposeEmailType
.نفِّذ دالة رد الاتصال التي تنفّذ إجراء إنشاء المسودّة. يتم تزويد هذه الدالة بكائن حدث كوسيطة. يجب أن تنفّذ دالة رد الاتصال ما يلي:
- أنشئ
GmailDraft
عنصرًا. - أنشئ كائن
ComposeActionResponse
باستخدام الفئةComposeActionResponseBuilder
والكائنGmailDraft
. - عرض
ComposeActionResponse
الذي تم إنشاؤه
- أنشئ
يمكنك ملء GmailDraft
الذي تنشئه في دالة معاودة الاتصال مسبقًا بالمستلمين والموضوع ونص الرسالة والمرفقات. لملء المسودة، يمكن أن تأتي البيانات من أي مصدر، ولكنها عادةً ما تكون مستمدة من المعلومات المقدمة إلى الإضافة نفسها، أو المعلومات الواردة في الرسالة المفتوحة، أو المعلومات التي يتم جمعها من خدمة تابعة لجهة خارجية. يحتوي عنصر الحدث الذي يتم تمريره إلى دالة رد الاتصال على معرّف الرسالة المفتوحة ومعلومات أخرى خاصة بالإضافة يمكنك استخدامها لتعبئة المسودة مسبقًا.
يمكنك إنشاء المسودة كرسالة جديدة مستقلة أو كرسالة رد على رسالة حالية. يتم التحكّم في ذلك من خلال التعداد ComposeEmailType
الذي يتم تقديمه إلى setComposeAction()
.
يمكنك إنشاء مسودات ردود كردود فردية أو رسائل "الرد على الكل".
المسودات المستقلة
تبدأ المسودة المستقلة سلسلة محادثات جديدة ولا تشكّل ردًا على أي رسالة حالية. يمكنك إنشاء مسودة مستقلة باستخدام إحدى وظائف خدمة Gmail التالية:
GmailApp.createDraft(recipient, subject, body)
GmailApp.createDraft(recipient, subject, body, options)
مسودات الردود
مسودة الردّ هي جزء من سلسلة رسائل حالية. تكون مسودات الردود إما ردودًا فردية يتم إرسالها فقط إلى مرسل الرسالة، أو مسودات "ردّ على الكل" يتم إرسالها إلى جميع من استلموا الرسالة. يمكنك إنشاء مسودة رد باستخدام إحدى وظائف خدمة Gmail التالية:
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)
مثال
يوضّح مقتطف الرمز البرمجي التالي كيفية تعيين إجراء ينشئ مسودة ردّ لزرّ.
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();
}