コモノExtendScript100本ノック

超初心者のDTPオペレーターが週にひとつスクリプトを書くブログ

054.【Id】選択範囲にテキスト変数があったら編集画面を開く

書いたコード if (!app.properties.activeDocument) { alert("中止しました。"); exit(); } if (app.selection.length !== 1) { alert("テキスト変数を選択してください。"); exit(); } var sel = app.selection[0]; // カーソルの次がテキスト変数なら選択…

053.【Id】アンカー付きオブジェクトのグループに別のアイテムを追加する

(元のアンカー付きオブジェクトはグループである必要はないのだけど、他に分かりやすい表現を見つけられなかった) 選択したオブジェクトに重なっているアンカー付きオブジェクトがあった場合、 一旦アンカーを解除 選択オブジェクトと元々アンカー付きオブ…

052.【Id】選択したテキストを右クリックメニューでGoogle検索する

※Mac未対応 ※ブラウザはChrome固定 書いたコード //@targetengine 'searchByChrome' var mn = app.menus.item("$ID/Main").submenus.item("Scripts"); mn.isValid && mn.remove(); var addCustomMenu = (function() { var customMenuAction = app.scriptMenu…

051.フォルダ・ファイルを一括リネーム

書いたコード //@targetengine "renameFiles" var log =[]; var folderObj = Folder.selectDialog("フォルダを選択してください"); if (folderObj) { var fileList = folderObj.getFiles(); } else { alert("キャンセルしました"); exit(); } // ファイル名…

050.【Id】前段落境界線と点対称になるように後段落境界線を設定

書いたコード var mu = app.scriptPreferences.measurementUnit; app.scriptPreferences.measurementUnit = MeasurementUnits.POINTS; var doc = app.activeDocument; var slct = doc.selection[0]; try { var pStyle = slct.appliedParagraphStyle; } catch…

049.【ID】【Acrobat】フォーム作成用スクリプト色々

書いたコード InDesign用 タブオーダー並べ替え // テキストボックス01→ラジオボタン02-01→ラジオボタン02-02→チェックボックス03 のようにする var doc = app.activeDocument; var pg = doc.pages[4] // ここでページ指定 var tmp = pg.tabOrder var arr = …

048.【ID】テキストフレームで字取り設定をするときのあれ

文字を選択した状態で実行すると、 ①親テキストフレームの座標を取得 ②親テキストフレームをフレームグリッド化 ③フレームグリッドのQ数設定を選択した文字のQ数に ④テキストフレームに戻す ⑤座標を元に戻す を行う。 書いたコード var doc = app.activeDocu…

047.【ID】左上→右下の順にテキスト書き出し

書いたコード var main = function () { var tmp = []; var doc = app.activeDocument; // 準備 // アイテムをオーバーライド for (var i = 0; i < doc.pages.length; i++) { for (var j = 0; j < doc.pages[i].masterPageItems.length; j++) { doc.pages[i]…

高速化についてのメモ

プリフライトオフ app.preflightOptions.preflightOff = true; 再描画無効 app.scriptPreferences.enableRedraw = false; undo制御 doScript(script, [language], [withArguments], [undoMode], [undoName]); undoModeをUndoModes.FAST_ENTIRE_SCRIPTにする…

046 補遺.【ID】フォルダ内全indt書き出し

修正① バックグラウンド処理を待つメソッドwaitForTask()を使用。 //@targetengine 'session' var preset = app.pdfExportPresets.itemByName("[PDF/X-4:2008 (日本)]"); var folderObj = Folder.selectDialog("フォルダを選択してください"); if (folderObj…

046.【ID】フォルダ内全indt書き出し

※未完成 書いたコード //@targetengine 'session' var myListener = app.eventListeners.itemByName("closeAfterExport"); if (myListener.isValid) { myListener.remove(); } app.addEventListener("afterExport", function (ev1) { var task = app.idleTas…

045.【ID】作成バージョンを判定

CC13.1.1、CC14.0.2(Windows)で確認。 Array.filter()はES3で使うためのArray.filter - DTPabからお借りしています。 書いたコード // Production steps of ECMA-262, Edition 5.1, 15.4.4.20 // https://www.ecma-international.org/ecma-262/5.1/#sec-15…

044.【ID】任意の文字列をテキスト変数にする(都度確認ver)

書いたコード //@targetengine 'convertToTextVariables2' var doc = app.activeDocument; var dialog = new Window("palette", "テキスト変数に置換"); dialog.add("statictext", undefined, "検索対象(正規表現)"); var source = dialog.add("edittext")…

043.【ID】選択オブジェクトを一括リサイズ

書いたコード //@targetengine 'resizeSelections' var base = []; var coordinate = []; var posArr = []; var doc = app.activeDocument; var sel = doc.selection; var dialog = new Window("palette"); dialog.text = "一括リサイズ"; dialog.orientatio…

042.【ID】Linkフォルダ内の不要なファイルを抽出・削除

Linkフォルダ内の不要なファイルを抽出し、選択したものだけ削除する。 書いたコード //@targetengine 'removeLinkFlie' var rslt = []; var doc = app.activeDocument; var inddLink = doc.links; var linkLen = inddLink.length; var linkPath = []; for (…

041.【ID】テキスト検索の設定を正規表現検索にコピー

正規表現検索をしたかったのに間違えてテキスト検索パネルで設定しちゃうことがよくあるので。 書いたコード app.findGrepPreferences.properties = app.findTextPreferences.properties; app.changeGrepPreferences.properties = app.changeTextPreferences…

040.【Acrobat】指定したPDFの1ページ目のみを結合

書いたコード var tgt = ["C:/temp/01.pdf", "C:/temp/02.pdf", "C:/temp/03.pdf" ] var myNewDoc = app.newDoc(); for (var i = 0; i < tgt.length; i++) { myNewDoc.insertPages({ nPage: myNewDoc.numPages - 1, cPath: tgt[i] }); } myNewDoc.deletePage…

039.【ID】選択対象群を位置関係を保ったままページ中央に

書いたコード var doc = app.activeDocument; var sel = doc.selection; var pBounds = sel[0].parentPage.bounds; // [y1, x1, y2, x2] var pHeight = pBounds[2] - pBounds[0]; var pWidth = pBounds[3] - pBounds[1]; var pCenter = [pWidth / 2, pHeight…

038.【ID】作業中のinddを新規ウィンドウで開き分割表示用ワークスペースを適用

書いたコード var docName = app.activeDocument.name; var windowArrangeMenu = app.menus.item("Main").menuElements[7].submenus[0]; var newWindowMenu = windowArrangeMenu.menuItems.item(docName+" の新規ウィンドウ"); newWindowMenu.associatedMenu…

037.【ID】アンカー付きオブジェクトの設定を揃える

書いたコード var doc = app.activeDocument; var sels = doc.selection; var refSel = sels[0]; var refPref = refSel.anchoredObjectSettings.properties; var stry = refSel.parent.parentStory; stry.pageItems.everyItem().anchoredObjectSettings.prop…

036.【ID】2つのテキストで使われている文字の差分を取得

書いたコード var tmp = []; var log = []; var txtFile1 = File.openDialog("テキスト1を指定してください", "*.txt"); if (txtFile1) { flag = txtFile1.open("r"); if (flag) { var tgt1 = txtFile1.read(); txtFile1.close(); } } var txtFile2 = File.o…

035.【ID】版面に合っていないテキストフレームを探す

書いたコード // 横組み限定 var doc = app.activeDocument; var ro = app.activeDocument.viewPreferences.rulerOrigin; app.activeDocument.viewPreferences.rulerOrigin = RulerOrigin.PAGE_ORIGIN; pl: for (var i = 0; i < doc.pages.length; i++) { if…

034.【ID】塗り/線の色が共通のオブジェクトを一括選択

Aiの選択>共通を再現したかった。 書いたコード //@targetengine selectByColor var i = 0; var doc = app.activeDocument; var sel = app.selection[0]; if (app.selection.length !== 1) { alert("1つのオブジェクトを選択してください。"); exit(); } if…

033.【ID】クリップボード内の複数行テキストを1行ずつペースト

挙動 ①あらかじめ aaa[改行]bbb[改行]ccc をコピーしておく ②スクリプト実行 ③任意の場所でフォーマットなしでペーストすると、「aaa」が貼り付けられる ④任意の場所でフォーマットなしでペーストすると、「bbb」が貼り付けられる ⑤任意の場所でフォーマ…

032.【ID】全ての表の1行目をヘッダーにする

書いたコード var tableParents = myFindText('<0016>'); for (var i=0;i

031.【ID】フォルダ内の全inddの代替字形をチェック

書いたコード var folderObj = Folder.selectDialog("フォルダを選択してください"); var myFiles = folderObj.getFiles("*.indd"); var myResultsTxt = ""; var errTxt = ""; var errCnt = 0; var errPath = folderObj.fsName + "/代替字形.txt"; app.findG…

030.【ID】フォルダ内の全inddのプリフライト結果を書き出す

書いたコード var folderObj = Folder.selectDialog("フォルダを選択してください"); var myFiles = folderObj.getFiles("*.indd"); var myResultsTxt = ""; var errTxt = ""; var errCnt = 0; var errPath = folderObj.fsName + "/プリフライトエラー.txt";…

029.【ESTK】任意の正規表現が名前に含まれないファイルを削除

書いたコード var myFolder = Folder.selectDialog("フォルダを選択してください"); var myException = [/.+\.pdf/, /.*確認.*\.txt/]; // pdfと確認事項txt以外を削除 removeFiles(myFolder, myException); // 二つ目の引数を指定しなければ全削除 function…

028.【ID】inddを任意のページで分割

1-2[タブ]ぱやぱや 3[タブ]ぽよぽよ のようなtxtを読み込んで、 元ネイティブ名_001_1-2_ぱやぱや.indd(元ネイティブの1~2P) 元ネイティブ名_002_3_ぽよぽよ.indd(元ネイティブの3P) をつくる。 書いたコード var doc = app.activeDocument; var fi…

027.【Acrobat】注釈のあるページだけ抽出

※バッチシーケンスに組み込んで使う用 書いたコード var flag = false; var annots = this.getAnnots() var annotsPagesTmp = []; for (var i = 0; i < annots.length; i++) { annotsPagesTmp.push(annots[i].page) } var annotsPages = removeArrayDuplicat…