في الإضافة، يمكنك إنشاء تطبيقات مصغّرة تتضمّن إجراءات مرتبطة. يمكنك استخدام أحد الإجراءات لإنشاء مسودات رسائل إلكترونية جديدة، مع إمكانية ملء هذه المسودات باستخدام المعلومات التي تم إدخالها في واجهة المستخدم الخاصة بالإضافة أو المعلومات الواردة من رسالة مفتوحة. على سبيل المثال، يمكنك تضمين زر في واجهة مستخدم الرسائل الخاصة بالإضافة ينشئ ردًا على الرسالة المفتوحة حاليًا مع ملء الحقول مسبقًا بالمعلومات من الإضافة.
عندما يتم تشغيل إجراء يؤدي إلى إنشاء رسائل، ينفّذ Gmail دالة ردّ الاتصال لإنشاء المسودة وإرجاعها. يعرض Gmail بعد ذلك المسودة في واجهة المستخدم ضمن نافذة إنشاء رسالة إلكترونية عادية، ويمكن للمستخدم تعديلها وإرسالها حسب الحاجة.
ضبط إجراء لإنشاء مسودة رسالة
لضبط أداة لبدء إجراء إنشاء مسودة عند تحديدها، عليك تنفيذ ما يلي:
تأكَّد من أنّ ملف البيان يتضمّن نطاق
action.compose:https://www.googleapis.com/auth/gmail.addons.current.action.composeيمكنك بدلاً من ذلك استخدام نطاق أكثر تساهلاً، ولكن يجب ألا تفعل ذلك إلا إذا كان هذا النطاق ضروريًا للغاية.
أنشئ عنصر
Actionواربطه بدالة ردّ اتصال تحدّدها.استدعِ دالة معالجة الأداة الخاصة بالأداة، مع تزويدها بكائن
ActionوتحديدComposeEmailType.setComposeActionنفِّذ دالة رد الاتصال التي تنفّذ إجراء إنشاء المسودّة. تتلقّى هذه الدالة عنصر حدث كوسيطة. يجب أن تنفّذ دالة رد الاتصال ما يلي:
- أنشئ
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 previously
// specified.
return CardService.newComposeActionResponseBuilder()
.setGmailDraft(draft).build();
}