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

Published Editor add-ons can create custom menu items under their editor's Extensions menu. Insert an add-on menu using Ui.createAddonMenu and add items to it with Menu.addItem . Menus are usually created in the add-on's onOpen method.

منوهای پویایی ایجاد کنید که بر اساس تعاملات کاربر یا وضعیت افزونه تغییر می‌کنند. با این حال، افزونه‌ها باید قبل از اینکه توسط کاربر تأیید شوند، یک منوی اولیه ایجاد کنند. به همین دلیل، قبل از ساخت منوها در 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();
}