主にInDesignによる新聞組版Tips中心です。Mac使いですが業務はWin多め。Win DTP Tipsを増やしたい

【InDesign】条件テキストで文字校正 2/2(ブックのインジケーターを一括変更)

1/2より続き。(2020.6.17 スクリプト記述を修正)



前項で、条件テキストの使い方と実行スクリプトを説明しました。

この条件テキストとインジケーターを変更する事で、後からちまちまちまちまAcrobatでハイライトと注釈を書き込んだり(※ツラい)、そもPDF注釈機能など見てもらえない層の方々(涙)への質問事項などを、データに変更を与えず安全に可視化させる事ができるわけですが、

f:id:chocomarine:20200526012342j:plain
インジケーターの変更
f:id:chocomarine:20200526012615j:plain
「表示と印刷」にすると、PDFにも反映されます

インジケーター変更が、ドキュメントの「別名で保存」でないと更新されないことは前項に書きましたが、これがブックだった場合。

f:id:chocomarine:20200526103301j:plain
ドキュメントが数十統合されたブック

ひとつひとつ開いて全て別名保存。つらいしバカバカしい。

同期オプションの「条件テキスト設定」を実行してみましたが、

f:id:chocomarine:20200529094315j:plain

インジケーターはこの「条件テキスト設定」に含まれません。(なんでや)

ということで、えっちらスクリプトを書いてみました。



フォルダ内inddドキュメントのインジケーターを一括変更

//DESCRIPTION:条件テキストインジケーターを変更+上書き保存(らーで閣下)

(function(){
    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)


単純なものしか書けませんごめんなさい

これだと別名保存と同じ意味合いになり、インジケーター変更も更新されます。

適用したくないドキュメントは、別フォルダを作り一時退避させて下さい。(子フォルダ内は処理しません)


フォルダ内の一括処理、また再帰処理などのテンプレには、いつもこちらを参考にしています。

rokuyan.hatenablog.com

tu-kazu.jp nakatoji.lolipop.jp

下記のは、1年前の私には紐解くに能力不足だった・・・・

uske-s.hatenablog.com

cs5.xyz

今ならもう少し理解できそう。

 

追記:

鯵ぼんさんが、「ブックのドキュメントからパスを取得する」という指定にしたら再帰処理要らないやろ、とアドバイスを!

さあ、続きを待て!←

 

-----------翌日談------------

鯵ぼんさん、Uskeさんのお叱りを受けながら()頑張ってみました。

ブックコンテンツの条件テキスト・インジケーターを一括変更

//DESCRIPTION:Bookの条件テキストインジケーターを変更(らーで閣下)

(function(){
    if (app.books.length == 0)
    { alert ("処理するブックを開いて下さい。終了します"); 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.HIDE_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も拾わずに済みますね。

毎度至らない永遠の末弟子(ぇ?)ですが、いつもいつもありがとうございます!!

試行錯誤しながらのエントリーだったので、散漫になってしまいましたね。(反省)

※エラー処理を追加しました
※細かい記述ミスを修正しました(ごべんなさい)
※不可視ファイルについて文章と記述を修正しました

不可視ファイルについては、そのうち別に纏めたいと思っています。