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