fc2ブログ


FC2カウンター
ブログ内検索
プロフィール

流星光輝

Author:流星光輝
InDesignを仕事で使っています。
まんどい作業をScriptで解決すべく
精進の日々を過ごしております。

カレンダー
12 | 2025/01 | 02
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -

InDesignのExtendedScriptでprompt使うときの注意とか

Scriptをjsxbinでバイナリ化して、わざわざjsxにリネームしてフリー配布してる人たちがいるみたいですけど、
こういう意味不明な挙動への対処方法とかを仕込んでるんだったら、jsxbinで配布しててもいいんだけど、
コードオープン化してくれませんかねぇ?w ググっても出てこないっすわよw


気を取り直して、まずは、Windows版のESTKでの例です。バージョンは現行のCCです。
winCC.png

下記のソースコードを、さりげなく実行してみます。

var a="";
for(var i=100;i<300;i++){
    a+=i+"/"
}
alert(a);
var b=prompt("check",a,"test");
alert(b);

(1)
winCC_1.png
(2)
winCC_2a.png
(3)
winCC_3.png

えっ!? クラッシュしちゃったよ! どうなってんすかー!!!

※1 なぜかCS1(3.0.1_838_J)環境だけはクラッシュしなかったです。えろい人教えて(人∀・)
※2 手元の旧環境を起動して確認したところCS2以降でクラッシュし、現行バージョンのCC2015環境下のESTKまででクラッシュしました。


次に上記のソースコードをmac環境で実行してみたいと思います。
※1 ESTKのバージョンは同じです。10.10.4環境下ですが…
※2 確認したESTKバージョンはCS3~CCです。

macCC.png

(1)
macCC_1.png
(2)
macCC_2.png
(3)
macCC_3.png

結果が違う!!!

Adobeさん、こういうのホント勘弁してー

InDesignでmacでもwinでも動作するScriptで入力させる必要があるときは、
回避する方法としてdialogを作ってtextEditboxesに入力してもらうということが必要ってことか…

#target indesign
var a="";
for(var i=100;i<300;i++){
    a+=i+"/"
}
alert(a);
var dlg=app.dialogs.add({name:"prompt代用"});
with(dlg.dialogColumns.add()){
    var tx=textEditboxes.add({minWidth:480, editContents:a});
}
if(dlg.show()){
    var b=tx.editContents;
    dlg.destroy();
    alert(b);
}

みたいなコードを書いておく必要があります…
InDesign Scripting TB(0) CM(1) 

spot遊び
AFDKOに含まれてるspot.exeで遊ぶとき、めっちゃ楽しいのですが、
InDesign上の適用しているフォント情報を使えないかなぁー、
って思う時ないですか? (ありますよね?w

普段ならVBで書いてしまうのですが、今回は敢えてExtendedScriptでやってみよー、ということで書いてみました。
※VBSを絡ませてるので、winのみで動作します。
win7(x86)+InDesignCS6の環境で、試しました。

jsxファイルと同じ階層にspot.exeが必要です。
続きを読む...
InDesign Scripting TB(0) CM(0) 

InDesignのDocument Fontsあれこれ
今回、色々と弄っていて、わかったことがあるので、ポストしておきます。
tenてんてーの「Document fontsに関する問題」を読まれると、何それオイシーの?から脱却できまし(お

■テスト用のドキュメントの作り方
1)InDesignで新規ドキュメントを作成
2)最初のページにテキストフレームを作成
3)上記2)のテキストフレームに文字を入力
4)保存します。
5)inddを保存した階層にDocument Fontsフォルダを作成
6)システムフォントに無いフォントを用意し、上記5)にコピー
7)上記4)のinddを開いて、上記6)のフォントを上記3)の文字に適用

さて、ここまでの手順で、ドキュメントフォントの使用されたinddが準備できたと思います。
下記の適当なコードをESTKで実行します。
#target indesign
if (app.documents.length!=0){
    var doc=app.activeDocument;
    var a1=doc.fonts[0];
    var a2=doc.textFrames[0].characters[0].appliedFont;
    $.bp();
    }
6行目でブレークポイントを設定しているので、止まります。
データブラウザパネルに変数a1とa2が見えると思います。
変数a1とa2は共にfontsへの参照ですが、最初に変数a1をダブルクリックすると正しく見えます。
次に変数a2をダブルクリックすると、ほとんどのプロパティで値が正しくない状態になります。
変数a2にアクセスするときに何かが起こってるのですが、何が起きているかは分かりません。
改めて、6行目のブレークポイントをlocationプロパティの内容をjavaScriptコンソールに書き出すように書き換えます。
    $.writeln(a1.location);
    $.writeln(a2.location);
書き換えたら再度、実行します。 a2.locationをコンソールに出力するコードでエラーが発生しますね。

Document Fontsフォルダのフォントが使用されているinddに対してScriptingするときは、
この辺りに注意して書いてあげれば、なんとかなったりすると思います。
InDesign Scripting TB(0) CM(0) 

三島梅花藻さんの「そのままアンカー付きオブジェクト化.jsx」をCS6で動かすための書き換えメモ
三島梅花藻さんが公開してくださっている
「そのままアンカー付きオブジェクト化.jsx」を
InDesignCS6で使うための書き換えメモ


とても便利なScriptなのですが、茶尾さんのツイートで、
どうやらCCで動かないとのこと。
せうぞーさんの記事を提案したところ、これも動かないとのことなので、
ソースコードを書き換えることでCS6で動かせるように修正したので、
そのメモ書きになります。

梅花藻さんの所(InDesignスクリプト配給所)からDLしていただいて、
下記3点について書き換えを行うことで、CS6でも動くようになると思います。
CCの環境の方もお時間ありましたら、試してみてくださいね。

※ 変更する部分は長くなってしまうので、追記に記載しました。
続きを読む...
InDesign Scripting TB(0) CM(0) 

InDesignからのDB戻し(表関係)
表組をDBに戻すっていう要求は結構あると思います。
んで、下図のような表の場合、どーやってDBに戻すかというと、
連結されたセルを前処理してDBに戻すと思います。

■InDesign組版の表(セルが連結されてます)
20131103_table1.png

■とりあえず表を連結解除します
20131103_table2.png

■Script実行後
20131103_table3.png

こんな感じでDBに戻すための前処理をScriptで書いてあげれば、
戻し作業は簡単になりますね。

下記のてきとーなScriptで、空セルに情報を引き継ぐことができます。
#target indesign
//横組:空セルに文字を引き継ぐScript
(function(){
if(app.selection.length==1){
    if(app.selection[0].constructor.name.match(/Table|Cell/)){
        var s=app.selection[0];
        for (var i=0;i<s.columns.length;i++){ //列でループ
            for (var j=0;j<s.columns[i].cells.length;j++){
                if (s.columns[i].cells[j].contents==""){ //空セル発見
                    s.columns[i].cells[j].texts[0].contents=s.columns[i].cells[j-1].texts[0].contents; //上のセル内容を引き継ぐ
                    }
                }
            }
        }
    }
})();

InDesign Scripting TB(0) CM(0) 


PREV PAGE   TOP   NEXT PAGE