コモノExtendScript100本ノック

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

100本ノック

079.【Id】タブ区切りテキストのテーブルをJSON形式(っぽい配列)にする

タブ区切りの文字列をJSON形式(っぽい配列)にする関数です。 事前にタブ区切りのtxtデータを読み込んでから実行することを想定しています。 生成した配列を使ってInDesignで自動組版したり、JSONファイルを作成して他のアプリケーションに渡したりするため…

078.【Acrobat】注釈の外観・プロパティを統一する

概要 「複数人で校正・校閲してPDFに注釈を入れたため、作成者や色がバラバラになっている。著者に送る前に統一したい」というケースを想定しています。 次の処理を行います。 注釈の作成者名を「XXXX」に統一 ハイライト注釈の色と不透明度を統一 図形注釈…

077.【Id】ドキュメントを開くときに毎回リンクをチェックする

概要 スタートアップスクリプトとして実行することで、ドキュメントを開くたびにリンクの状態とパスをチェックするように設定します。 下記の状態が検出された場合は、ドキュメントがあるフォルダにテキストを書き出します。 リンク切れ パスにアクセスでき…

076.【Id】別のinddからフォームフィールドを読み込む

挙動 ダイアログに従って、 1. 読み込み元のindd 2. 読み込み先のindd を選択すると、1のinddに含まれるラジオボタン・チェックボックス・テキストフィールドが、2のinddに読み込まれる。 (タブオーダーは変わってしまう) コード メモ 読み込んだ後はタブ…

075.【Id】指定フォルダ内のOfficeデータから画像を抽出

画像がOfficeデータに貼っつけられたかたちで入稿されることがよくあります。 一つならまだしも、たくさんあると一つ一つzip化してmediaフォルダまで潜って…とするのはちょっと面倒 (Bridgeを使えば多少手軽になるかもですが、なぜかうちのBridgeはめちゃめ…

074.【Id】見出しをセクションマーカーにする

こんな感じの柱をつくるとき、セクションマーカーを使うことが多いです。 セクションマーカーはとても便利なのですが、 「一つ一つマーカーを設定するのはめんどくさい…」 「項目の増減があったときに設定し忘れそう…」 といった不満や不安がありました。 そ…

073.【Id】[基本段落]があたっている段落を[段落スタイルなし]にする

挙動 inddを開いた状態で実行する 「(^.+$|\r)」で正規表現検索を行う 2.で取得した段落のうち、[基本段落]があたっているものに対し[段落スタイルなし]をあてがう(あたっている段落スタイルは変えるが、現状の体裁を保持する) InDesignの検索置換を利用し…

072.【Id】セルの斜線をノセにする

InDesignの不具合なのか、表の斜線は[黒]スウォッチ100%でも自動でオーバープリント設定がかかりません。 このバグをカバーするために、表の斜線が[黒]スウォッチ100%だった場合にノセにするスクリプトを作成しました。 類似のスクリプトがいくつかWeb…

071.【Id】ブックから指定したドキュメントを書き出し

ブック内のドキュメントを指定してPDFを書き出すスクリプト。 例えば、書籍の途中に挟まる折り込みページだけPDFを分けたいときなどに使うつもりで作成しました。 (↑「02-02_2章-2_折込」だけ別PDFにしたい) 挙動 以下のような指示書(テキストファイル)…

070.【Id】Type1フォントを指定したフォントに置換する

挙動 アクティブドキュメントにType1フォントが使用されていた場合、指定したフォントに置換する。 オプションでスタイルやグリッドフォーマットの設定も変更する。 コード //@targetengine "changeType1Font" var main = function() { app.scriptPreference…

069.【Id】作業時間を記録する

InDesignドキュメントがアクティブ状態にある時間を計測し、作業時間を算出する。 挙動 ドキュメントを開かない状態で実行する(あるいはInDesign起動前にStartup Scriptsフォルダに入れておく)。 ドキュメントが開かれるとデスクトップに「log.txt」が作成…

068.【Id】重なっているパネルを切り替える

私が普段使いしているワークスペース上では、文字パネルと段落パネルが重なっています。 こんな感じ。 ディスプレイがもっと大きければ横並びにしたいくらい、どちらもよく使うパネルです。 手っ取り早く切り替える手段には、まずデフォルトのショートカット…

067.【Id】一括再リンク

実行方法 extendscript-es5-shimから、indexOf()のポリフィルをダウンロードする このスクリプトと同階層に「indexOf.js」を移動する 以下のようなテキストデータを作成する リンクAの現在の絶対パス[タブ]リンクAの差し替え後の絶対パス リンクBの現在の…

066.【Id】選択しているリンクのファイル名を変更する

挙動 リンクを選択した状態で起動する リンクが正常な状態かチェック ダイアログが表示されるので新しい名前を入力する リンクデータのファイル名が変更される リンクが繋ぎなおされる コード var main = function() { app.scriptPreferences.enableRedraw =…

065.【Id】異なるinddの同名段落スタイルの差分を取得

※未完成 ※同じ名前の段落スタイルであっても、スタイルグループが異なる場合は別物として扱う 挙動 前準備 Github上でextendscript-es5-shimとして公開されているプロジェクトから、indexOf()とisArray()のポリフィルをダウンロードする このスクリプトと同…

064.【Id】未使用のスタイル・レイヤー・スウォッチ一括削除

※未完成です 挙動 以下の順番で削除する。 ・未使用のレイヤー ・未使用の文字スタイル・文字スタイルグループ ・未使用の段落スタイル・段落スタイルグループ ・未使用のオブジェクトスタイル・オブジェクトスタイルグループ ・未使用のセルスタイル・セル…

063.【Id】マスターページ一括割り当て

挙動 起動するとダイアログが立ち上がる ダイアログに表示されたレイヤー名を元に、以下のようなテキストデータを作成する ページ範囲 [タブ] マスター名1 ページ範囲 [タブ] マスター名2 (ページの指定は名前か絶対ページ番号で行う。どちらも「-」で…

062.【Id】レイヤーを切り替えて複数回PDF書き出し

挙動 起動するとダイアログが立ち上がるので、書き出しプリセットを選択する ダイアログに表示されたレイヤー名を元に、以下のようなテキストデータを作成する ページ範囲 [タブ] PDFファイル名1 [タブ] レイヤー1,レイヤー2 ページ範囲 [タブ] PDFフ…

061補遺.【Id】タブ区切りtxtを読み込んで一括検索置換2

分かったこと 前回の記事にUske_Sさんからコメントを頂きました! 色々と勉強になったのでまとめると、 - File.openDialog()の戻り値 キャンセルされた場合の返り値はnull。 つまり、ファイルがあるかどうかを確認するにはexistsプロパティを見ればOKだが、…

061.【Id】タブ区切りtxtを読み込んで一括検索置換2

挙動 あらかじめ以下のようなテキストデータを作成しておく 検索ワード1[タブ]置換ワード1 検索ワード2[タブ]置換ワード2 起動時に上記テキストを指定する ①正規表現かテキスト検索か、②どこを検索範囲とするか を選択する 実行ボタンを押すと、検索ワー…

060.【Ai】PDFを複製保存→上書きして閉じる

挙動 aiデータを開いた状態でIllustratorのファイルメニューから実行する PDF書き出しプリセットを選択する aiとpdfの更新時間を一致させるため、1番目のレイヤーのロックを切り替えて元に戻す pdfを書き出す aiを上書き保存する コード //@targetengine sav…

059.【Id】年月を指定してカレンダーを作る(日本の祝日対応版)

挙動 あらかじめ内閣府webサイトから国民の祝日csvをダウンロードしておく。 実行するとウィンドウが立ち上がるので、年と月を入力して実行ボタンを押す。 祝日csvを要求されるので、上記csvを選択する。 カレンダーに記載する日付(先月の末日~今月~来月…

058.【Id】年月を指定してカレンダーを作る

挙動 実行するとウィンドウが立ち上がるので、年と月を入力して実行ボタンを押す。 カレンダーに記載する日付(先月の末日~今月~来月の頭)の配列が生成される。 新規ドキュメントが作成される。 必要な段落・文字・セル・表スタイルが作成される。 テキス…

057.【Id】タブ区切りtxtを読み込んで一括検索置換

挙動 あらかじめ以下のようなテキストデータを作成しておく 検索ワード1[タブ]置換ワード1 検索ワード2[タブ]置換ワード2 起動時に上記テキストを指定する ①正規表現かテキスト検索か、②どこを検索範囲とするか を選択する 実行ボタンを押すと一括で検索…

056.【Id】テキストフレームを1段落ずつバラす

挙動 テキストフレームを選択した状態で起動する 段落の数だけテキストフレームを複製する n段落目以外を削除する フレームを内容に合わせる 作成されたテキストフレーム群を等間隔に分布する コード // 例外処理 if (app.documents.length < 1) { alert("ド…

055.【Id】placeMultipagePDF改

メモ 経緯 InDesignのビルトインスクリプトの中にPlaceMultipagePDF.jsxというものがあります。 マルチページPDFを自動で配置してくれる便利なやつなのですが、色々と自分のニーズに合わないところがあったのでカスタマイズしてみました。 PlaceMultipagePDF…

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(); } // ファイル名…