편집기 부가기능의 맞춤 메뉴

게시된 편집기 부가기능은 편집기의 확장 프로그램 메뉴 아래에 맞춤 메뉴 항목을 만들 수 있습니다. 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();
}