يمكن لإضافات المحرِّر المنشورة إنشاء عناصر قائمة مخصَّصة ضمن قائمة الإضافات الخاصة بالمحرِّر. أدرِج قائمة إضافات باستخدام Ui.createAddonMenu وأضِف عناصر إليها باستخدام Menu.addItem. يتم عادةً إنشاء القوائم في طريقة onOpen الخاصة بالإضافة.
إنشاء قوائم ديناميكية تتغيّر استنادًا إلى تفاعلات المستخدم أو حالة الإضافة ومع ذلك، يجب أن تنشئ الإضافات قائمة أولية قبل أن يمنح المستخدم الإذن للإضافة. لهذا السبب، يُرجى التحقّق من وضع التفويض الخاص بالإضافة قبل إنشاء القوائم في onOpen. لا تتّخذ أي إجراء يتطلّب الحصول على إذن (مثل التحقّق من النص البرمجي Properties) أثناء تشغيل الإضافة في وضع ScriptApp.AuthMode.NONE. يمكنك الاطّلاع على
مراحل نشاط التفويض
للحصول على مزيد من التفاصيل حول أوضاع التفويض ومراحل النشاط.
ستؤدي محاولة اتّخاذ إجراءات تتطلّب تفويضًا عندما يكون وضع التفويض ScriptApp.AuthMode.NONE إلى حدوث خطأ. قد يؤدي ذلك إلى منع عرض قوائم الإضافات.
يوضّح المثال التالي كيفية إنشاء قائمة إضافات ديناميكية لأوضاع التفويض المختلفة:
function onOpen(e) {
// Or DocumentApp, SlidesApp, or FormApp.
var menu = SpreadsheetApp.getUi().createAddonMenu();
if (e && e.authMode == ScriptApp.AuthMode.NONE) {
// Add a normal menu item (works in all authorization modes).
menu.addItem('Start workflow', 'startWorkflow');
} else {
// Add a menu item based on properties (doesn't work in AuthMode.NONE).
var properties = PropertiesService.getDocumentProperties();
var workflowStarted = properties.getProperty('workflowStarted');
if (workflowStarted) {
menu.addItem('Check workflow status', 'checkWorkflow');
} else {
menu.addItem('Start workflow', 'startWorkflow');
}
// Record analytics.
UrlFetchApp.fetch('http://www.example.com/analytics?event=open');
}
menu.addToUi();
}