في إحدى إضافات Google Workspace، يمكنك إنشاء تطبيقات مصغّرة تتضمّن إجراءات مرتبطة. يمكنك استخدام إجراء لإنشاء مسودات رسائل إلكترونية جديدة، ويمكنك اختياريًا ملؤها باستخدام معلومات تم إدخالها في واجهة مستخدم الإضافة أو معلومات من رسالة مفتوحة. على سبيل المثال، يمكنك إضافة زر في واجهة مستخدم الرسائل في الإضافة لإنشاء ردّ على الرسالة المفتوحة حاليًا ومعبّأ مسبقًا بمعلومات من الإضافة.
عند بدء إجراء ينشئ الرسائل، ينفذ Gmail دالة callback لإنشاء المسودة وإعادتها. يعرض 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();
}