【InDesign】条件テキストで文字校正 2/2(ブックのインジケーターを一括変更)
1/2より続き。(2023.12.30 スクリプト内confirm文章を、意味が通じやすいように修正)
前項で、条件テキストの使い方と実行スクリプトを説明しました。
この条件テキストとインジケーターを変更する事で、後からちまちまちまちまAcrobatでハイライトと注釈を書き込んだり(※ツラい)、そもPDF注釈機能など見てもらえない層の方々(涙)への質問事項などを、データに変更を与えず安全に可視化させる事ができるわけですが、
インジケーター変更が、ドキュメントの「別名で保存」でないと更新されないことは前項に書きましたが、これがブックだった場合。
ひとつひとつ開いて全て別名保存。つらいしバカバカしい。
同期オプションの「条件テキスト設定」を実行してみましたが、
インジケーターはこの「条件テキスト設定」に含まれません。(なんでや)
ということで、えっちらスクリプトを書いてみました。
フォルダ内inddドキュメントのインジケーターを一括変更
//DESCRIPTION:条件テキストインジケーターを変更+上書き保存(らーで閣下)
(function(){
flagA=confirm("次で指定するフォルダー内全ての*.inddに対して実行します。\rWinの場合ネットワーク内の通信が重くなるため、予め対象フォルダーをShift+→クリック→「パスのコピー」を取ってから実行して下さい。\r\r実行しますか?")
if(flagA == false)
{
alert("終了します");
exit();
}
else
{
var folderObj = Folder.selectDialog ("処理するInDesignファイルのあるフォルダを選択");
if (! folderObj)
{ alert ("キャンセルが押されました。終了します"); exit(); }
else
{
makeList (folderObj); // Dialog pathに対して、下の関数を実行
function makeList (folderObj) // inddファイルを求める関数
{
// ファイルとフォルダを取得
var fileList = folderObj.getFiles ("*.indd");
var array = [];
for (i=0; i<fileList.length; i++)
// Windowsから見えるAppleDouble(._xxxx.indd)を除外
if (fileList[i].name.match ("^[^\.]"))
{
array.push(fileList[i]);
var arrayFile = app.open(array);
/////////////////ここに処理を書く/////////////////////////
app.activeDocument.conditionalTextPreferences.showConditionIndicators = ConditionIndicatorMode.HIDE_INDICATORS;
/*
HIDE_INDICATORS 1698908520 (隠す)
SHOW_AND_PRINT_INDICATORS 1698908528 (表示と印刷)
SHOW_INDICATORS 1698908531 (表示のみ)
*/
/////////////////////////////////////////////////////////////
for (j=arrayFile.length-1; j>=0; j--)
{
var arrayFilePath = arrayFile[j].fullName;
var saveINDD = new File (arrayFilePath) ;
arrayFile[j].save(saveINDD);
arrayFile[j].close(SaveOptions.no);
}
}
}
}
})();
※不可視ファイル(AppleDouble)除外版に差し替えました(2020.6.17)
単純なものしか書けませんごめんなさい
これだと別名保存と同じ意味合いになり、インジケーター変更も更新されます。
適用したくないドキュメントは、別フォルダを作り一時退避させて下さい。(子フォルダ内は処理しません)
フォルダ内の一括処理、また再帰処理などのテンプレには、いつもこちらを参考にしています。
tu-kazu.jp http://nakatoji.lolipop.jp/index.php/extendscript/js-gen/jslist/9-2014-05-09-04-06-48nakatoji.lolipop.jp
下記のは、1年前の私には紐解くに能力不足だった・・・・
今ならもう少し理解できそう。
追記:
鯵ぼんさんが、「ブックのドキュメントからパスを取得する」という指定にしたら再帰処理要らないやろ、とアドバイスを!
さあ、続きを待て!←
-----------翌日談------------
鯵ぼんさん、Uskeさんのお叱りを受けながら()頑張ってみました。
ブックコンテンツの条件テキスト・インジケーターを一括変更
//DESCRIPTION:Bookの条件テキストインジケーターを変更(らーで閣下)
(function(){
flagA = confirm ("activeBookが対象です。「1つだけ」開いていますか?");
if (flagA == false)
{
alert("対象ブックを開いてからやり直して下さい。\r\r【終了】");
exit();
}
else
{
var myBook = app.activeBook;
var myBookContents = myBook.bookContents;
for (i=0; i<myBookContents.length; i++)
{
var fileObjPath = myBookContents[i].fullName;
app.open(File(fileObjPath));
var myDoc = app.activeDocument;
myDoc.conditionalTextPreferences.showConditionIndicators = ConditionIndicatorMode.SHOW_INDICATORS;
/*
HIDE_INDICATORS 1698908520 (隠す)
SHOW_AND_PRINT_INDICATORS 1698908528 (表示と印刷)
SHOW_INDICATORS 1698908531 (表示のみ)
*/
var saveINDD = new File(fileObjPath) ;
myDoc.save(saveINDD);
myDoc.close(SaveOptions.no);
}
}
})();
これなら不可視ファイルも、ブック対象外inddも拾わずに済みますね。
毎度至らない永遠の末弟子(ぇ?)ですが、いつもいつもありがとうございます!!
試行錯誤しながらのエントリーだったので、散漫になってしまいましたね。(反省)
※エラー処理を追加しました
不可視ファイルについては、そのうち別に纏めたいと思っています。
※細かい記述ミスを修正しました(ごべんなさい)
※不可視ファイルについて文章と記述を修正しました
※(2023.12.1)最初のconfirm文章を直しました