• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
5

executeMenuCommand() Command List

Engaged ,
Aug 12, 2022 Aug 12, 2022

Copy link to clipboard

Copied

While building Ai Command Palette I found a great list of executeMenuCommand() values extracted by Shalako Lee from the 2017 SDK. As you might imagine, some of those commands no longer work, and since I'm about to release v0.2.0 of Ai Command Palette I've been testing them all and keeping track of the results in this Google Sheet.

 

I'm sharing this here because I figured this might be useful to some of you who write scripts for Illustrator. The sheet includes the Original List of commands from Shalako and a working list of the commands that I'm testing in Ai v26.3.1.

 

Right now I'm about halfway through the original 506 commands from Shalako's list. So far, I've found about 90 that no longer work. I've also updated any verbiage that may have changed in the menu system (since 2017) and updated the ordering to match Ai v26.3.1.

 

I also, made a simple script to test the commands below if you want to test any yourself. I'm trying to test each command in context to ensure they are working correctly.

 

Let me know if you have any other that I may have missed... Cheers!

 

P.S. There is another list on this forum (posted in 2014) that I have yet to review but I am aware of it and plan to compare it with Shalako's.

 

 

 

var result = prompt("Enter Command To Test", "", "Test Built-In Commands");

try {
  app.executeMenuCommand(result);
} catch (e) {
  alert("Error executing command:\n" + result + "\n\n" + e);
}

 

 

 

TOPICS
Scripting

Views

6.0K

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 3 Correct answers

Guide , Aug 12, 2022 Aug 12, 2022

You may be interested in this 

 

I've found Ten A's list to be the most complete: 

https://ten-artai.com/illustrator-ccver-22-menu-commands-list 

Votes

Translate

Translate
Community Expert , Aug 12, 2022 Aug 12, 2022

I also maintain a menuCommandString database, so I will introduce it. It is Illustrator 2022 (26.4.1) equivalent and is made of Notion. There are currently 530 commands in this database.

Illustrator Reference/ExtendScript/app.executeMenuCommand | Notion

Votes

Translate

Translate
Explorer , Aug 15, 2022 Aug 15, 2022

There is my list for app.executeMenuCommand('command'),

with some plugins and parm error:

https://www.dropbox.com/s/kr426jos9gw09ko/menu.txt?dl=0

 

And app.selectTool('command'):

https://www.dropbox.com/s/qjivaj753y1egwl/tool.txt?dl=0

Votes

Translate

Translate
Adobe
Engaged ,
Aug 15, 2022 Aug 15, 2022

Copy link to clipboard

Copied

Another great list! I went through all of yours and added the ones I didn't have. Thanks so much!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Aug 16, 2022 Aug 16, 2022

Copy link to clipboard

Copied

I was not aware of the "app.selectTool()" command! Thank you.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Oct 22, 2022 Oct 22, 2022

Copy link to clipboard

Copied

Command has been updated to AI 2023.

 

Also, maybe someone will need a list of aliases – commands from the kys file and their counterparts for executeMenuCommand:

https://www.dropbox.com/s/0rl0lzy6a1aswoh/kysalias.txt?dl=0

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Oct 22, 2022 Oct 22, 2022

Copy link to clipboard

Copied

thanks for the update!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Oct 24, 2022 Oct 24, 2022

Copy link to clipboard

Copied

I thought a bit and made a draft of the commands change log:

https://www.dropbox.com/s/nkzyv483dr4tx0t/modifiedcommands.json?dl=0

The log is inaccurate, but perhaps someone will clarify and supplement it.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Oct 24, 2022 Oct 24, 2022

Copy link to clipboard

Copied

Yeah, so I built a new spreadsheet for my latest version of Ai Command Palette which you can see here. It has the min and max versions for menu and tool commands that I was last aware of. I plan to go through your list and add them there as well. It has a bunch of other stuff, including the localization for DE and RU. This python script I created ingests these spreadsheets (as CSV's) and creates JavaScript objects very similar to your last post (see below).

 

Ai Command Palette uses this to know which menu commands and tools should be available for each user depending on their system. It would be great if we could all work together to try and complete this list as much as possible. I did a bunch of testing for the last version and plan to do the same for this one when I have time.

 

// generated localized commands data object
{
  tool: {
    "tool_Adobe Add Anchor Point Tool": {
      action: "Adobe Add Anchor Point Tool",
      type: "tool",
      minVersion: 24,
      maxVersion: null,
      loc: {
        en: "Add Anchor Point Tool",
        de: "Ankerpunkt-hinzufügen-Werkzeug",
        ru: "Добавить опорную точку Инструмент",
      },
    },
  },
  // ...
}

 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Oct 25, 2022 Oct 25, 2022

Copy link to clipboard

Copied

@krasnovpro, I went through your updated lists and got everything I didn't have added to my spreadsheet. Ai Command Palette is updated with these in v0.4.1 too. Thanks!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Jun 28, 2024 Jun 28, 2024

Copy link to clipboard

Copied

The app.selectTool command for AstuteGraphicsPlugins doesn't seem to work. When I tested it, it caused Adobe Illustrator 2024 to crash. I used the command from your tool.txt file: app.selectTool('AG Dynamic Shapes');`, but it didn't work even though the plugin is installed. Could there be an error in the documentation?

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Jun 30, 2024 Jun 30, 2024

Copy link to clipboard

Copied

Correct code:

app.selectTool('Dynamic Shapes Tool');

Read the file more carefully.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Jun 30, 2024 Jun 30, 2024

Copy link to clipboard

Copied

Where did you find these tool names, I have another aip plugin but I don't know the tool names for it!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Jul 01, 2024 Jul 01, 2024

Copy link to clipboard

Copied

LATEST

Go to Edit → Keyboard Shortcuts.

Bind your tool to the 0 (zero key).

Save set with name test.

Run Notepad and open this file:

%AppData%\Adobe\Adobe Illustrator 28 Settings\en_US\x64\test.kys

(fix the path if you have a different version or locale).

Find all occurrences of /Key 48.

One of them will look something like this:

	/Snap\ To\ Collisions\ Tool {
		/Context 0
		/Modifiers 0
		/Represent 48
		/Key 48
	}

Remove the leading slash and all backslashes, and you get the command name.

In this example, it's Snap To Collisions Tool.

Now you can use it with app.selectTool.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Aug 15, 2022 Aug 15, 2022

Copy link to clipboard

Copied

awesome work, thanks to all that contributed to put the list together.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Aug 15, 2022 Aug 15, 2022

Copy link to clipboard

Copied

So many great resources here. Thanks to everyone for contributing and compiling these lists and even testing them in different versions.

 

On the topic of menu commands, my biggest gripe has always been the naming convention of the commands. In many cases, the argument required for app.executeMenuCommand() is cryptic, nonsensical, or not at all descriptive of what the command does. Additionally, the variable naming convention makes it very difficult to remember how to format the argument for the command you need. And incorrectly formatting your menu command argument brings about the dreaded MRAP/PARM. 

 

Would there be any interest in, or do you think you might use some kind of framework for app.executeMenuCommand() allowing the freedom to effectively namespace "app.executeMenuCommand" with a custom function name (personally, id choose emc("commandName"); but any user could choose whatever function name they want. Then within the function, the custom arguments are assigned to the appropriate argument for executeMenuCommand(). Errant arguments could also be handled more gracefully and with more useful info than a generic mrap.

 

This also gives freedom to the user to customize their command/argument pairs to best suit their workflow. As an example, to select all same fill colors, the default argument is "Find Fill Color menu item" in a frustrating variable letter case scheme.. I'd like to call that command with emc("sameFill"); so in my emc() function, i'd assign "sameFill" to "Find Fill Color menu item", then input the appropriate argument into executeMenuCommand();

 

It would also be possible to include custom logic before/after the actual menu command for certain commands. As an example, the live pathfinder effects often need to be expanded. But not always. emc() could accept another argument for enabling or disabling the paired functionality, or even just passing it in as one of the parameters. perhaps an object literal for feeding custom params to different functions.

 

You could also bind multiple menu commands together for common tasks, all while keeping your main code nice and tidy (a big priority of mine after many years of writing disgusting spaghetti code) with menu command arguments that make sense to YOU and are customizable for your own workflow.

 

If optimization is desired.. I.E, not including a giant function with 500+ commands to every script just so you can use one or two.. The commands could be split into smaller chunks by category like "File", "Edit", etc. Or even compact custom sets for production that only include the commands your code actually uses.

 

What do you guys think? I know extendscript/scripting-as-we-know-it is dying anyway and transitioning to UXP.. But I think this would be a pretty straightforward build that could still be useful in the interim.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Aug 15, 2022 Aug 15, 2022

Copy link to clipboard

Copied

Small emc() chunks can be manually written for the current task. I haven't seen any scripts that use a lot of different app.executeMenuCommand().

 

ES will not die as long as there are users of old versions of Illustrator. And there are a lot of them, because Adobe updates are unpredictable, break paid plugins and user workflow.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Jan 27, 2024 Jan 27, 2024

Copy link to clipboard

Copied

Thank you so much for all your work!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Advocate ,
Feb 13, 2024 Feb 13, 2024

Copy link to clipboard

Copied

Nice, i jsut noticed that some columns are hidden For instance the English column

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Feb 13, 2024 Feb 13, 2024

Copy link to clipboard

Copied

Hmm, I'm not sure why they were hidden. There were some columns also missing for additional languages. The linked Google Sheet pulls from another Google Sheet where I track more stuff for one of my projects and I had an error in the importrange formula. Cheers!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Advocate ,
Feb 14, 2024 Feb 14, 2024

Copy link to clipboard

Copied

Is that perhaps why your palette does not "show all menu commands" as in one of your videos. If i search for it, it doesnt appear. If i go into the preferences, the initial menu item which shows, it doesnt show neither

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Feb 14, 2024 Feb 14, 2024

Copy link to clipboard

Copied

That was a built-in command that I removed a few versions ago. You can access any menu command by just searching for the command name, or the latest version has a new feature that enables searching on the command type. If you "Enable Searching on Command Type" which can be searched for or found in the "Ai Command Palette Settings..." command. After enabled, you can search for "menu" and all menu commands will show up in the results. Searching on type is disabled by default and can be toggled anytime in the palette settings. Hope that helps. Cheers!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Advocate ,
Feb 14, 2024 Feb 14, 2024

Copy link to clipboard

Copied

Yeah found that. Pretty cool tool by the way. Very impressive since I read you started development in 2020. I guess by that you meant learn to code right?

 

Ps do you know of the website by Jonas to create dialog layouts for scriptui. It's super handy for creating precise and much shorter code for dialogs

 

Checkout out: scriptui.joonas.me

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Feb 14, 2024 Feb 14, 2024

Copy link to clipboard

Copied

I disagree with you about the short code in scriptui.joonas.me. After export you can refactor and shorten the dialog code by removing unimportant parameters, properties of dialog objects. I use it to quickly create a visual structure, but then I clean up the code afterwards. As a tool, this dialog builder is certainly good.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Advocate ,
Feb 15, 2024 Feb 15, 2024

Copy link to clipboard

Copied

@Sergey Osokin 

Ow yeah I remove that restore section. But otherwise, it's way easier to work with vs those old files like we see in photoshop. Where each prop always has the parent prop etc etc before it. It makes referencing a bit more complicated 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Feb 15, 2024 Feb 15, 2024

Copy link to clipboard

Copied

Really glad to hear you found the tool handy! And yes, I use scriptui.joonas.me often, mostly as a visual layout tool and reference. I typically still write most of the UI code by hand because I enjoy pain 🤣.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Advocate ,
Feb 15, 2024 Feb 15, 2024

Copy link to clipboard

Copied

Ow really, that's a waste of time. I mean I remember prior to finding that, that checking layout takes so much time

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines