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

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

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

مثال زیر نحوه ساخت منوی افزودنی پویا برای حالت‌های مختلف مجوز را نشان می‌دهد:

function onOpen(e) {
  var menu = SpreadsheetApp.getUi().createAddonMenu(); // Or DocumentApp or SlidesApp or FormApp.
  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();
}