منوهای سفارشی برای افزودنیهای ویرایشگر، منوهای سفارشی برای افزودنیهای ویرایشگر

افزونه‌های منتشر شده‌ی ویرایشگر می‌توانند آیتم‌های منوی سفارشی را در منوی افزونه‌های ویرایشگر خود ایجاد کنند. با استفاده از Ui.createAddonMenu یک منوی افزونه وارد کنید و با Menu.addItem آیتم‌هایی را به آن اضافه کنید. منوها معمولاً در متد onOpen افزونه ایجاد می‌شوند.

منوهای پویایی ایجاد کنید که بر اساس تعاملات کاربر یا وضعیت افزونه تغییر می‌کنند. با این حال، افزونه‌ها باید قبل از اینکه توسط کاربر تأیید شوند، یک منوی اولیه ایجاد کنند. به همین دلیل، قبل از ساخت منوها در onOpen ، حالت تأیید افزونه را بررسی کنید. در حالی که افزونه در ScriptApp.AuthMode.NONE است، هیچ اقدامی که نیاز به تأیید دارد (مانند بررسی Properties اسکریپت) انجام ندهید. برای جزئیات بیشتر در مورد حالت‌ها و چرخه تأیید، به چرخه تأیید مراجعه کنید.

تلاش برای انجام اقداماتی که نیاز به مجوز دارند در حالی که حالت مجوز 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();
}