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

افزونه‌های منتشر شده‌ی ویرایشگر می‌توانند آیتم‌های منوی سفارشی را در منوی افزونه‌های ویرایشگر خود ایجاد کنند. می‌توانید با استفاده از متد 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();
}