DTPab

印刷やデザイン、アドビ製アプリやスクリプトなど、雑多な技術ブログ

ExtendScript

Illustratorのスクリプト勉強中③

前回までのあらすじ 紆余曲折を経て、選択しているオブジェクトをなんとか整列させるところまでできました。オブジェクトの移動だけならObject.positionプロパティに配列を渡すだけでいいんですね。 また、geometricBounds、controlBounds、visibleBoundsの…

Illustratorのスクリプト勉強中②

前回までのあらすじ 前回のコード 今日の目標 座標を取得する 3つのBounds オブジェクトを整列しよう で、結局どうやって移動するの 0番目のオブジェクトにあわせて整列する 前回までのあらすじ ちゃんと続きましたw 選択しているオブジェクトがどんな順番で…

Illustratorのスクリプト勉強中①

はじめに どんなスクリプトを作るか オブジェクトを捕まえる どういう順番で並んでいるのか 色成分って…? 色成分を配列に取得する関数 選択したオブジェクトの順番がわかった はじめに 職場でスクリプトの制作依頼をもらわない限り、僕は基本的にIllustrato…

JavaScriptでFizz Buzz

お遊びついでということで、Fizz Buzzもやってみました。 普通にやってもつまらないので、Fizz Buzzだけで3種類です。 普通にFizz Buzz for (var i=1; i<=100; i++){ if (i%3 === 0 && i%5 === 0) $.writeln("Fizz Buzz"); else if (i%3 === 0) $.writeln("F…

JavaScriptでブラックジャック

先日見つけたQiitaの記事が面白そうだったので、僕もExtendScript(ES3ベースのAdobe拡張JavaScript)で遊んでみました。 もっといろいろ機能を持たせられそうだし、もっと効率的なコードにできそうなんですけど、ひとまずできたものはできたということで。 …

実行する回数によって処理を変えたい

同僚から、初めて実行した時と2回目に実行した時とで、スクリプトの動作を変えたいがどうすればいいか?という質問をもらいました。 せっかくなので「実行する回数によって処理を変える方法」について(もちろんInDesignのスクリプトです)説明したいと思い…

「InDesign JavaScript教室」第1期の申込受付が始まりました

cs5.xyz お〜まちさん(CS5)が以前の東京DTP勉強会で話していらっしゃった、希望者がいればInDesignを使ったJavaScript(ExtendScript)の勉強会を開催しますというお話、実現することになりました。 詳細は上記リンクより確認してください。 で、なんで僕…

InDesignの正規表現検索チートシート

【訂正 2018.9.4】一部表記を訂正しました(赤字部分)。 なんか前回も検索についての記事だったんですけど、今回もたまたま検索に関する記事です。やっぱりよく使うInDesignの正規表現検索。 で、InDesignの正規表現検索は標準機能ながら強力で使いやすいの…

ExtendScriptでJSONオブジェクトを使う

何度か書いていますが、ExtendScriptはECMAScript3なので、ES5で実装されたJSON.parseメソッドやJSON.stringifyメソッドが使えません。 これを使えるようにするためには、JSONライブラリを実装します。 まずはここから「json2.js」をダウンロードします。 Gi…

JavaScriptの検索とInDesignの検索

【4/5 21:56 戻り値の表記にアドバイスをいただいたので反映させました】 【4/6 09:10 findTextメソッドとfindGrepメソッドの設定をクリアするコードを追記し、indexOfメソッドとlastIndexOfメソッドのコードのミスを修正しました】 この前のもくもく会で、J…

#includeにもスコープが適用される

大した話じゃないのですが、スコープ内で#includeして外部スクリプトを読み込む場合、当然スコープが適用され、スコープの外からは参照できなくなります。 一方、prototype拡張はこれまた当然ながらスコープなど関係なく拡張できます。 このことを利用すると…

DTPerのスクリプトもくもく会#6 開催報告

改めまして、先日、DTPerのスクリプトもくもく会#6を開催しました。 いろいろありましたので、前回記事もお目通しください。 保留中の宿題まとめ 開いているウィンドウの数を調べたい 座標を調べて比較しよう 余談 いただいた質問 everyItemメソッド イベン…

保存バージョン以外のInDesignで開くのを警告したい

はじめに 動作画面 コード 説明など ダウンロード はじめに 繁忙期も佳境になり、仕事に忙殺されております。 しかしだからこそ、スクリプトという享楽に打ち込んでしまうのもまた必然…。 それはさておき、できそうだなと思って取り組んでこなかったスクリプ…

InDesignの標準機能「大文字と小文字の変更」の不具合

大した内容ではないのですが、ちょっとしたInDesignの不具合を見つけました。けっこう限定的なので普段の組版へはあまり大きな影響はないと思います。結果として2つの不具合を紹介しますが、恐らく原因は同じです。 では本題です。 InDesignの書式メニューに…

スクリプトもくもく会#5を開催しました(1)

2018年最初のもくもく会でしたが、おかげさまで大盛況のうちに終わりました。ご参加のみなさま、そして会場を貸してくださったYUIDEAさま、ありがとうございました。今年もゆる〜く続けていくつもりですので、よろしくお願いします。 さて、もくもく会でいた…

TrueとFalseのトグル

【追記】したたか企画さんからのリプライを追記しました。ありがとうございます。 やりたいこと 正攻法のif文 三項演算子 XOR演算子 XOR演算子とは ビット演算子利用時の注意点 否定演算子 やりたいこと 字形パネルをショートカットで閉じたり開いたりしたい…

InDesign CC2017(12.1)で表のヘッダーとフッターが消える

(訂正 2017.11.11 11:09)CC2017では、古いドキュメントでも再現します。 (追記 2017.11.11 15:00)対策用のイベントスクリプトを追記しました。 (追記 2017.11.11 22:20)検証バージョンを追記しました。 (追記 2017.11.13 16:00)注意とスクリプトを追…

配列から重複要素を削除したい

配列から重複要素を削除する関数 説明 注意点 雑感 配列から重複要素を削除する関数 配列から重複要素を削除するには、filterやsetなどを使うといいそうです*1。 しかし僕が使うのは当然ながらExtendScript(以下ExS)。ECMAScript(JavaScriptの標準仕様*2…

targetengineとそれを利用した擬似的ライブラリ

(10/24 10:15 追記) 現れた場所に関係なく、変数の宣言はコードを実行する前に処理されます。var を伴って宣言した変数のスコープは実行コンテキスト (execution context)であり、これは変数を含んでいる関数、または関数の外で宣言された変数はグローバル…

アートボードから飛び出た部分を収めたい

イラレのスクリプトを久しぶりに作ってみました。 コードは以下の通りです #target "illustrator" var result = main(); if (result) alert(result); function main(){ if (parseInt(app.version,10)<15) return "IllustratorCS5以降対応のスクリプトです"; …

もくもく会#3まとめ

はじめに 会場について モニターを使った発表 CEPとSUI(こうちゃん) SUIで生成するフローティングウィンドウ CEPで生成するフローティングウィンドウ コールバック スクリプト作成のためのスクリプト支援(kmutoさん) Grepクエリマネージャ(自分) 補足 …

二重配列によるソートでフレームを座標順に取得する

二重配列とは sortメソッド 論理演算子|| 本題 二重配列をソートする関数 ちょっと躓いたので備忘録も兼ねて残しておきます。ちょっとだけツイートした二重配列のソートについてです。 二重配列と配列に対するsortメソッドについては既に知っているよ、とい…

アイテムの存在するページの確認

あるアイテムがドキュメントの何ページ目にあるのかというのは、スクリプトを介して意外と簡単に取得できます。ただ、それが意図した結果かどうかというのは別の話です。スクリプトではよくある話ですね。 というわけで、まずは下図をご覧ください。 見開き…

parentPageのparent

ここんとこレジュメのスクリプトばっかりで遊んでないので、ちょっぴりハマったことをメモ。 ドキュメント中のテキストフレーム内の文字を選択した状態で、そのテキストフレームと同じページに新たにオブジェクトを作りたかった。 var myDoc = app.activeDoc…

もくもく会#2レジュメ 解答編5「doScriptによる実行」

元の設問はこちら。 機能1:動作するInDesignのバージョンを指定する 機能2:[黒]スウォッチだけでなく,色成分がK100のみの場合もすべてオーバープリントにする、機能3:スクリプトで修正した個数をカウントして表示 機能4:開いているすべてのドキュメント…

もくもく会#2レジュメ 解答編4「任意に実行」

元の設問はこちら。 機能1:動作するInDesignのバージョンを指定する 機能2:[黒]スウォッチだけでなく,色成分がK100のみの場合もすべてオーバープリントにする、機能3:スクリプトで修正した個数をカウントして表示 機能4:開いているすべてのドキュメント…

もくもく会#2レジュメ 解答編3「すべてのドキュメントで実行」

改めて元の設問はこちら。 機能1、機能2・3は前回・前々回の記事を参照してください。 さて、機能4です。 4.開いているすべてのドキュメントで実行する var allDocs = app.documents; for (var x=0; x

もくもく会#2レジュメ 解答編2

解説らしい解説がないので、機能2と3は抱き合わせました。 さっそく以下からどうぞ。 2.[黒]スウォッチだけでなく,色成分がK100のみの場合もすべてオーバープリントにする var myDoc = app.activeDocument; var myTxf = myDoc.textFrames; for (var i=0; i

もくもく会#2レジュメ 解答編1

先日のもくもく会#2に合わせて作ったレジュメですが、ボチボチ解答例を上げていきます。興味のある方はトライしてみてください。 というわけで、まずは機能1「動作するInDesignのバージョンを指定する」です。

もくもく会#2のおさらい

dtpmkmk.connpass.com 本日、無事に「DTPerのスクリプトもくもく会 #2」が開催されました。 会場をお貸しくださったMD5500さん、そして参加してくださった皆様、ありがとうございました。 次回は9月開催の予定です。近づいた頃Twitterやブログで告知します…