The script isn’t authorized yet
Run any script once to trigger authorization:
Extensions → Apps Script → Run → onOpen
The file opened before the menu finished loading
Reload the tab. The menu appears once the script runs.
The script isn’t bound to the spreadsheet
Make sure you made a copy of the entire spreadsheet, not individual tabs. Menu items only load in a fully copied file.