久々にAppleScriptでもいじろうか、と
AppleSccript。

Excel ver.Xでちょっとやりたいことがあって。
マクロでもいいんだけど、まー、AppleScriptのほうが馴染みがあるので。

●やりたいこと
先方支給のExcelに文字修飾が施されていて(赤く色付けされている)、その箇所になにかしらのキーを埋め込んで、InDesignに取り込み後スタイルをあてて不要となったキーを削除する

InDesign以降の処理はJavaScriptでできるので(AppleScriptでやればシームレスな気もするが今あるJavaScriptを流用したいので)Excelの部分をなんとかしないとなー。

AppleScriptいじるの一年ぶり以上だが、はてさて文法を思い出すところからスタートだな(^^;
【2008/01/29 11:48 】 | AppleScript | コメント(3) | トラックバック(0) | page top↑
InDesignでJavaScript素人講座 その5
InDesignでJavaScript素人講座 その5。

今回から実際のScriptをサンプルにして、JavaScript(以下Script)の書き方とか要点などを説明していきます。
私の説明が足りてないところなどはご自分でネットなどで調べてみてください。
読んだ人に自発的に勉強してもらおうなんて、なんて都合のいい私。
ほら、自分で調べないと覚えないって言うじゃないですか。

そんなわけで、スタートです。

サンプルは下記になります。

01 var pageObj = app.documents.add();
02 pageObj.documentPreferences.pageWidth = "210mm";
03 pageObj.documentPreferences.pageHeight = "297mm";
04 txtObj = pageObj.textFrames.add();
05 txtObj.visibleBounds = ["10mm","5mm","50mm","100mm"];
06 txtObj.contentType = ContentType.textType;
07 txtObj.contents = "InDesignでJavaScript素人講座";


まず上記のScriptをExtendScript Toolkitにコピペしてください(行頭の数字は行番号を意味しているので削除してくださいね)。
そしたら、とりあえず結果を見てもらいたいので、このScriptを実行してみてください。
すると新規ドキュメントが作成され、テキストフレームが作成され、そのテキストフレームにInDesignでJavaScript素人講座という文字が流し込まれているはずです。

無事動いたところでScriptの具体的な説明に入りましょう。

まず1行目。

01 var pageObj = app.documents.add();


新規ドキュメントを作成して、そのドキュメントを変数pageObjに代入しています。
新規で作成したオブジェクトを参照することは頻繁にあることなので、とりあえず変数に代入しておきましょう。
この命令文は
app.documents.add();
var pageObj = app.activeDocument ;
のように2行にわけて書くことも可能です。
でも1行のほうが打つ文字数も少ないですし、あとから見直しやすいので私は1行で書いてしまうことを推奨します。

続いて2〜3行目。

02 pageObj.documentPreferences.pageWidth = "210mm";
03 pageObj.documentPreferences.pageHeight = "297mm";


ここでは1行目で作成したドキュメントのサイズを設定しています。
pageObjというオブジェクト(activeDocument、またはdocument[0]が入っています)のdocumentPreferencesというプロパティのpageWidth(pageHeight)というプロパティに指示をしています。
「幅を210mm、高さを297mmにしてね」と言っていると思ってください。
ちなみに単位を入れないで指定することも可能ですが、その場合はInDesignの環境設定で指定されている単位が適用されることになるので、不特定多数が相手のScriptの場合は上記のように単位を指定しておいたほうがベターです。
ちなみに単位を指定しない場合は
pageObj.documentPreferences.pageWidth = 210;
となります。
"〜"は文字列を意味しますが、単位を指定しない場合は数値のみの記述でOKなので、"〜"はいりません。

続いて4行目。

04 txtObj = pageObj.textFrames.add();


新規テキストフレームを作成して、そのテキストフレームを変数txtObjに代入しています。
1行目と同じですね。
まー、こうやって変数に代入していくと途中で関数なのか変数なのかわかんねぇ!ってなりがちなので、変数名は自分なりのルールをもってつけましょうね。
ちなみにこの時点ではテキストフレームではなかったりします。

続いて5行目。

05 txtObj.visibleBounds = ["10mm","5mm","50mm","100mm"];


4行目で作成したテキストフレームに座標値を与えて、座標とサイズを変更しています。
visibleBoundsは線を含めない座標値、geometricBoundsは線を含めた座標値のプロパティです。
どちらも[左側のY座標, 左側のX座標, 右側のY座標, 右側のX座標]で数値を指定します。
ここでも単位を指定していますがドキュメントサイズと同様に省略することも可能です。

続いて6行目。

06 txtObj.contentType = ContentType.textType;


4行目で作成したテキストフレームの属性をテキストにします。
contentTypeはテキストフレームの属性を設定するプロパティ。
ContentType.GraphicTypeでグラフィックフレームに、ContentType.Unassignedで割り当てなしのフレームになります。
なので、4〜6行目はセットで覚えておくといいと思います。

最後に7行目。

07 txtObj.contents = "InDesignでJavaScript素人講座";


4行目で作成したテキストフレームに「InDesignでJavaScript素人講座」という文字を流し込みます。
contentsはテキストフレーム内の内容(テキスト)を設定するプロパティ。
var textExtract = txtObj.contents ;
上記のようにtextExtractという変数にテキスト内容を代入したりもできます。
これもとてもよく使うプロパティなので絶対覚えておきましょう。

さらさらっとした説明になってしまいましたが、初めてScriptを触る方にはちんぷんかんぷんかもしれません…。
結構こんな文章でも推敲して書いてはいるので、やっぱり文才がないのかもしれない。
えーと、こんな拙い説明と文章でもないよりマシだと思うので、地道に頑張って続けていきたいと思います、はい。
応援メッセージよろしく(笑)
諸先輩方、ソフトな突っ込みよろしく(苦笑)

次の講座では画像を扱ったScriptをサンプルにして、画像にまつわるいろいろを説明しようかな、と漠然と思考中。
そんなこんなでその5は終了。


【2008/01/18 19:26 】 | InDesignでJavaScript素人講座 | コメント(2) | トラックバック(0) | page top↑
明けましておめでとうございます
雑談。

明けましておめでとうございます。
ってすでに7日たってたりしますが、まあお気になさらずに。

えー、更新が滞っているJavaScript素人講座ですが、来週出向先に戻ってからの再開となります。
しばし、お待ちを(待っている人、います?)

さて、今年の目標は「常に90%」。
100%で走ることなんて青春っぽくて私には向いてないので、適度に肩の力を抜いてのほほんとやってこうと思います。

今年もよろしくです。
【2008/01/07 15:18 】 | 雑談 | コメント(0) | トラックバック(0) | page top↑
| ホーム |