القوائم المخصَّصة في "إضافات المحرِّر"

يمكن لإضافات المحرِّر المنشورة إنشاء عناصر قائمة مخصَّصة ضمن قائمة الإضافات الخاصة بالمحرِّر. أدرِج قائمة إضافات باستخدام 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();
}