# ScriptCommand

In a script's [**OnInit**](../scripting_events/oninit) method it can call the [**ScriptInitData**](scriptinitdata)**.AddCommand** method to [add commands](../../../scripting/example_scripts/adding_a_new_internal_command) to the Opus internal command set. Each call to **AddCommand** returns a **ScriptCommand** object that the script needs to initialize.

| Property Name | Return Type                                         | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ------------- | --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| desc          | _string_                                            | Use this to set a description for the command, that is displayed in the [Customize](../../../customize) dialog when the user selects the command from the [Commands tab](../../../customize/the_customize_dialog/commands).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| fayt          | _object:_[**ScriptFAYTCommand**](scriptfaytcommand) | Returns a [**ScriptFAYTCommand**](scriptfaytcommand) object that you can use to initialise this command to [extend the FAYT field](../../../scripting/example_scripts/extending_the_fayt).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| hide          | _bool_                                              | Set to **True** to hide this command from the drop-down command list shown in the [command editor](../../../customize/creating_your_own_buttons/command_editor). This lets you add commands that can still be used in buttons and hotkeys but won't clutter up the command list.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| icon          | _string_                                            | Use this property to assign a default icon to this command. You can specify the name of an internal icon (if you want to specify an icon from a particular set, use _setname:iconname -_ use this if you have bundled your script in a [script package](../../../scripting/script_add-ins/script_package) with its own icon set) or the path of an external icon or image file.                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| label         | _string_                                            | <p>Use this to set a label for the command. This is displayed in the <a href="../../../customize/the_customize_dialog/commands">Commands tab</a> of the <a href="../../../customize">Customize</a> dialog (under the <em>Script Commands</em> category), and will form the default label of the button created if the user drags that command out to a toolbar.</p><p>The actual name of the command (used to invoke the command) is assigned through the <strong>name</strong> property.</p>                                                                                                                                                                                                                                                                                                                      |
| method        | _string_                                            | <p>This is the name of the method that Opus will call in your script when the command is invoked. This would typically be set to <em>OnXXXXX</em> where <em>XXXXX</em> is the name of the command, however any method name can be used.</p><p>When the method is invoked it is passed a single argument, a <a href="scriptcommanddata"><strong>ScriptCommandData</strong></a> object. Generically this method is referred to as <a href="../scripting_events/onscriptcommand"><strong>OnScriptCommand</strong></a>.</p>                                                                                                                                                                                                                                                                                            |
| name          | _string_                                            | This is the name of the command. This determines the name that will invoke the command when it is used in buttons and hotkeys.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| noprogress    | _bool_                                              | Set to false if you don't want your command to display a progress indicator if more than one file is selected.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| template      | _string_                                            | <p>This lets you specify an optional command line template for the command. This is a string in the form <em>ARGNAME1/MOD,ARGNAME2/MOD,ARGNAME3/MOD</em>, etc, where ARGNAME is the name of the argument and /MOD are one or more <a href="../../command_reference/argument_types">modifiers used to indicate the argument type</a>. The command line template can specify as many arguments as needed.</p><p>When your command is invoked and its **<a href="../scripting_events/onscriptcommand">OnScriptCommand</a>**event is triggered, any arguments supplied on the command line are parsed according to this template and provided via the <a href="scriptcommanddata"><strong>ScriptCommandData</strong></a><strong>.</strong><a href="func"><strong>func</strong></a><strong>.args</strong> property.</p> |
