[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

(DTPtechNote:1648) [InDesign CS3][JavaScript][Scripting]Menuスクリプト(2)



Menuを操作するスクリプト覚え書き(2)
メニューの追加。既存のメニューにカスタマイズなメニューを追加できる。
ただし、これは後述する理由で、使わないほうがいい機能だと思う。

JavaScript(pp99)もAppleScript(pp117)の方もScripting Guideのサンプルも、サンプルファイルの方もこのままでは動かない。
理由は、ロケールが考慮されていないから。
日本語環境だと、こう書く必要がある。

var my_main_menu = app.menus.item("$ID/Main");
var my_type_menu = my_main_menu.menuElements.item("書式");//参照名がわからなかった。$ID/Typeではないみたい。
var my_font_menu = my_type_menu.menuElements.item("フォント");
var my_kozmin = my_font_menu.submenus.item("小塚明朝 Pro ");//最後になぜかスペースが必要

var my_special_font_menu = my_main_menu.submenus.add("Kozuka Mincho Pro");
for (i = 0; i < my_kozmin.menuItems.length; i++) {
	var my_associated_menu_action = my_kozmin.menuItems.item(i).associatedMenuAction;
	my_special_font_menu.menuItems.add(my_associated_menu_action);
}

実行すると、メインメニューにあたらしく「Kozuka Mincho Pro」というメニューができ、それぞれのウエイトが選べるようになる。かなり派手な感じ^^
ただし、これを実行するとメインメニューに「Kozuka Mincho Pro」というメニューが残ってしまって、再起動しても消えない。
消し方も書かれていない(笑
これを消すときは

var my_main_menu = app.menus.item("$ID/Main");
var my_type_menu = my_main_menu.menuElements.item("Kozuka Mincho Pro");
my_type_menu.remove();

を実行する必要がある。
再起動してもメニューが消えないのはよくない。
なぜなら、スクリプトがなんらかの不具合で異常終了して、メニューの後片付けをしないでタスクが消えてしまうことはよくあることだろうから。
ちょっと危ない機能なので、いまは使わないのが吉かもしれない。