في إضافة 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();
}