게시된 편집기 부가기능은 편집기의 확장 프로그램 메뉴 아래에 맞춤 메뉴 항목을 만들 수 있습니다. Ui.createAddonMenu() 메서드를 사용하여 부가기능 메뉴를 삽입하고 Menu.addItem() 메서드를 사용하여 항목을 추가할 수 있습니다. 메뉴는 일반적으로 부가기능의 onOpen(e) 메서드에서 생성됩니다.
사용자 상호작용 또는 부가기능 상태에 따라 변경되는 동적 메뉴를 만들 수 있습니다. 하지만 부가기능이 사용자의 승인을 받기 전에 부가기능이 초기 메뉴를 만들어야 합니다. 따라서 onOpen(e)에서 메뉴를 구성하기 전에 부가기능의 승인 모드를 확인해야 합니다. 부가기능이 ScriptApp.AuthMode.NONE에 있는 동안 승인이 필요한 작업 (예: 스크립트 Properties 확인)을 시도하지 마세요. 승인 모드 및 수명 주기에 관한 자세한 내용은 승인 수명 주기를 참고하세요.
다음 예는 다양한 승인 모드에 맞게 동적 부가기능 메뉴를 빌드하는 방법을 보여줍니다.
functiononOpen(e){varmenu=SpreadsheetApp.getUi().createAddonMenu();//OrDocumentApporSlidesApporFormApp.if(e && e.authMode==ScriptApp.AuthMode.NONE){//Addanormalmenuitem(worksinallauthorizationmodes).menu.addItem('Start workflow','startWorkflow');}else{//Addamenuitembasedonproperties(doesn't work in AuthMode.NONE).varproperties=PropertiesService.getDocumentProperties();varworkflowStarted=properties.getProperty('workflowStarted');if(workflowStarted){menu.addItem('Check workflow status','checkWorkflow');}else{menu.addItem('Start workflow','startWorkflow');}//Recordanalytics.UrlFetchApp.fetch('http://www.example.com/analytics?event=open');}menu.addToUi();}
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2024-12-18(UTC)"],[[["Published Editor Add-ons can create custom menu items under the Extensions menu using `Ui.createAddonMenu()` and `Menu.addItem()`, typically within the add-on's `onOpen(e)` method."],["While unpublished add-ons can create top-level menus, it's recommended to use `Ui.createAddonMenu()` for published add-ons to ensure consistent user experience."],["Add-ons must create an initial menu before user authorization and adjust menu items dynamically based on the authorization mode (`ScriptApp.AuthMode`) to avoid errors."],["The provided example demonstrates building a dynamic add-on menu that adapts to different authorization modes, using `ScriptApp.AuthMode.NONE` to control actions requiring authorization."]]],[]]