Adobe 0046100128056 Scripting Guide - Page 131

Running a Menu Action from a Script, Adding Menus and Menu Items

Page 131 highlights

CHAPTER 9: Menus Running a Menu Action from a Script 131 var myString = ""; var myMenuAction = app.menuActions.item("Convert to Note"); var myKeyStrings = app.findKeyStrings(myMenuAction.name); if(myKeyStrings.constructor.name == "Array"){ for(var myCounter = 0; myCounter < myKeyStrings.length; myCounter ++){ myString += myKeyStrings[myCounter] + "\r"; } } else{ myString = myKeyStrings; } alert(myString); NOTE: It is much better to get the locale-independent name of a menuAction than of a menu, menuItem, or submenu, because the title of a menuAction is more likely to be a single string. Many of the other menu objects return multiple strings when you use the findKeyStrings method. Once you have the locale-independent string you want to use, you can include it in your scripts. Scripts that use these strings will function properly in locales other than that of your version of InDesign. To translate a locale-independent string into the current locale, use the following script fragment (from the TranslateKeyString tutorial script): var myString = app.translateKeyString("$ID/NotesMenu.ConvertToNote"); alert(myString); Running a Menu Action from a Script Any of InDesign's built-in menuActions can be run from a script. The menuAction does not need to be attached to a menuItem; however, in every other way, running a menuItem from a script is exactly the same as choosing a menu option in the user interface. For example, If selecting the menu option displays a dialog box, running the corresponding menuAction from a script also displays a dialog box. The following script shows how to run a menuAction from a script (for the complete script, see InvokeMenuAction): //Get a reference to a menu action. var myMenuAction = app.menuActions.item("$ID/NotesMenu.ConvertToNote"); //Run the menu action. This example action will fail if you do not //have text selected. myMenuAction.invoke(); NOTE: In general, you should not try to automate InDesign processes by scripting menu actions and user-interface selections; InDesign's scripting object model provides a much more robust and powerful way to work. Menu actions depend on a variety of user-interface conditions, like the selection and the state of the window. Scripts using the object model work with the objects in an InDesign document directly, which means they do not depend on the user interface; this, in turn, makes them faster and more consistent. Adding Menus and Menu Items Scripts also can create new menus and menu items or remove menus and menu items, just as you can in the InDesign user interface. The following sample script shows how to duplicate the contents of a submenu to a new menu in another menu location (for the complete script, see CustomizeMenu):

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209

C
HAPTER
9: Menus
Running a Menu Action from a Script
131
var myString = "";
var myMenuAction = app.menuActions.item("Convert to Note");
var myKeyStrings = app.findKeyStrings(myMenuAction.name);
if(myKeyStrings.constructor.name == "Array"){
for(var myCounter = 0; myCounter < myKeyStrings.length; myCounter ++){
myString += myKeyStrings[myCounter] + "\r";
}
}
else{
myString = myKeyStrings;
}
alert(myString);
N
OTE
:
It is much better to get the locale-independent name of a
menuAction
than of a
menu
,
menuItem
, or
submenu
, because the title of a
menuAction
is more likely to be a single string. Many of the other menu
objects return multiple strings when you use the
findKeyStrings
method.
Once you have the locale-independent string you want to use, you can include it in your scripts. Scripts
that use these strings will function properly in locales other than that of your version of InDesign.
To translate a locale-independent string into the current locale, use the following script fragment (from the
TranslateKeyString tutorial script):
var myString = app.translateKeyString("$ID/NotesMenu.ConvertToNote");
alert(myString);
Running a Menu Action from a Script
Any of InDesign’s built-in
menuActions
can be run from a script. The
menuAction
does not need to be
attached to a
menuItem
; however, in every other way, running a
menuItem
from a script is exactly the same
as choosing a menu option in the user interface. For example, If selecting the menu option displays a
dialog box, running the corresponding
menuAction
from a script also displays a dialog box.
The following script shows how to run a
menuAction
from a script (for the complete script, see
InvokeMenuAction):
//Get a reference to a menu action.
var myMenuAction = app.menuActions.item("$ID/NotesMenu.ConvertToNote");
//Run the menu action. This example action will fail if you do not
//have text selected.
myMenuAction.invoke();
N
OTE
:
In general, you should not try to automate InDesign processes by scripting menu actions and
user-interface selections; InDesign’s scripting object model provides a much more robust and powerful
way to work. Menu actions depend on a variety of user-interface conditions, like the selection and the
state of the window. Scripts using the object model work with the objects in an InDesign document
directly, which means they do not depend on the user interface; this, in turn, makes them faster and more
consistent.
Adding Menus and Menu Items
Scripts also can create new menus and menu items or remove menus and menu items, just as you can in
the InDesign user interface. The following sample script shows how to duplicate the contents of a
submenu to a new menu in another menu location (for the complete script, see CustomizeMenu):