【注意】本スクリプトはドキュメントの内容を変更するものです。また、一時的に「GREP」フォルダなどの名称を変更します。必ずドキュメントや、各フォルダのバックアップをとってからご使用ください。
※2019.9.11サンプルデータを更新/置換対象を「ドキュメント」「ストーリー」「選択範囲」から選べるようダイアログを追加しました。
※2020.1.07サンプルデータを更新/APFSフォーマット環境でクエリの実行順が乱れることに対応しました(クエリ名の順に実行)。
※本スクリプトはMac用です。Windowsでは正しく動作しません。
InDesignで作業をしていると検索/置換のためのクエリ数が増え、管理に困ることがあります。できればクライアントや媒体ごとにクエリを収めるフォルダを分けておきたいとお考えの方は多いのではないでしょうか。今回は、そのように分けたフォルダ内のクエリを一括実行するスクリプトを考えてみました。
※検索/置換を一括実行せずGREPフォルダの切り換えのみを行いたい場合は「InDesignの検索/置換用「GREP」フォルダをスクリプトで切り換える」(http://mottainaidtp.seesaa.net/article/464972607.html)を参照ください。
スクリプトの内容
スクリプトの大ざっぱな流れとしてはクエリを収めたフォルダをダイアログで選択(フォルダ名を記憶)→元々の「GREP」フォルダの名称を一時的に「GREP_ original_saved」に変更(ダイアログで「GREP」フォルダを選択した場合は変更不要)→先にダイアログで選択したフォルダの名称を「GREP」に変更(同)→「GREP」内のクエリを全部実行→「GREP」フォルダの名称を元に戻す(同)→「GREP_ original_saved」フォルダの名称を「GREP」に戻す(同)
ということになります。
※スクリプト実行中にエラーが発生した場合、フォルダ名が変わったままになる可能性があります。その場合は手動でフォルダ名を戻してください。
使い方
クエリを収めたフォルダは「Find-Change Queries」内(「GREP」フォルダと同階層)に置いてください。クエリを収めたフォルダの名称は「GREP〜」とします(「GREP_A社の作業用」など)。※「Find-Change Queries」の場所についてはアドビのサイトを参照してください。
ドキュメントを表示した状態でスクリプトを実行してください。アクティブドキュメントのみが処理対象となります。
動画でも触れていますがドキュメントに存在しない設定(段落スタイル、文字スタイル、スウォッチなど)がクエリに含まれている場合、アラートが表示されることなく意図しない結果になることがあります。事前に個々のクエリーの設定が、すべてドキュメントに存在することを確認した上でご使用ください。
※今回、処理対象はアクティブドキュメント全体としました。「すべてのドキュメント」「ストーリー」「選択範囲」などを対象にしたい場合は132行目「mydoc.changeGrep();」を書き換えてみてください。
※2019.9.11サンプルデータを更新/置換対象を「ドキュメント」「ストーリー」「選択範囲」から選べるようダイアログを追加しました。
※2020.1.07サンプルデータを更新/APFSフォーマット環境でクエリの実行順が乱れることに対応しました(クエリ名の順に実行)。
クエリが入っているフォルダを、Find-Change Queriesに置いてスクリプトを実行したのですが、
---------------------------
Script Alert
---------------------------
「Find-Change Queries」内の「GREP〜」という名称のフォルダを選択してください
となってしまい、実行できません。
Windows7 InDesignCCです。
ご教示お願いいたします。
コメントをありがとうございます。
ブログ内に記載すべきでしたが、
当方はMac環境で作業をしており、
スクリプトもMac環境を想定して作成しています。
(Windows環境がなく動作を確認できないためです)
MacとWindowsではファイルパスの記述が違うため今回のスクリプトも動作しなかったのだと思います。
試しにファイルパスに関係ある行のみ少し触ってみました。
もしかしたら、これで動くかもしれません。
https://mottainaidtp.up.seesaa.net/image/exe_my_queries_4w_0818a.zip
動かなかった場合、上にも書きましたように
当方で動作が確認できないため対応が困難です。
申し訳ありませんがご理解ください。
ご回答と、スクリプトの改良ありがとうございました。
さっそく、動作確認してみたのですが、
フォルダを選択して、これから実行するというところまではいくのですが、その後、スクリプトエラーになってしまいました。
内容は、やはり、フォルダパスのようですので、自分の環境にあわせて、コード変えてみようかとおもいます。
お忙しいなか、ありがとうございました。