024.【ID】特定の文字列を一括でテキスト変数にする
「2018年度」を一括で「2019年度」にしたい。ついでに来年はもっと楽したい。
書いたコード
#targetengine "convertToTextVariables" var doc = app.activeDocument; // ウィンドウ作成 var myWindow = new Window("palette", "テキスト変数に置換"); var clmnSize = [120, 20]; myWindow.add("statictext", undefined, "検索対象(正規表現)"); var myRegExpClmn = myWindow.add("edittext"); myWindow.add("statictext", undefined, "テキスト変数 名前"); var myTVNameClmn = myWindow.add("edittext"); myWindow.add("statictext", undefined, "テキスト変数 テキスト"); var myTVTxtClmn = myWindow.add("edittext"); myRegExpClmn.preferredSize = myTVNameClmn.preferredSize = myTVTxtClmn.preferredSize = clmnSize; var start = myWindow.add("button", undefined, "実行"); start.onClick = function () { // テキスト変数を作成 var myTV = doc.textVariables.add({name:myTVNameClmn.text}); myTV.variableType=VariableTypes.CUSTOM_TEXT_TYPE; myTV.variableOptions.contents = myTVTxtClmn.text; // 置換対象取得 app.findGrepPreferences.findWhat = myRegExpClmn.text; var myFindWhat = app.findGrep(); // テキスト変数に置換 for (var i = 0; i < myFindWhat.length; i++) { app.select(myFindWhat[i]); var sel = doc.selection[0]; sel.insertionPoints.firstItem().textVariableInstances.add ({associatedTextVariable: myTV}); myFindWhat[i].remove(); } myFindPrefReset(); } myWindow.show(); function myFindPrefReset() { app.findGrepPreferences = NothingEnum.NOTHING app.changeGrepPreferences = NothingEnum.NOTHING }
メモ
分からなかったこと
- menuActions
最初に立てた方針では、menuActionsでテキスト変数を挿入するつもりだった。
Id上の操作でいうと、「書式→テキスト変数→変数を挿入→作成した変数」というのをやりたかったのだけど、どう書けばいいのか分からなかった。
とりあえずこれではないと思うんだけど一応メモしておく。
var myAction = app.menuActions.itemByName("$ID/Custom Text") myAction.invoke();
積み残し
- 一つ一つ確認しながら置換していけるようにしたい。