DTPab

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

ExtendScript

ふたたびのArray.filter

過去自分で書いたArray.filterですが、うまく動かないことがあると言われまして、ずっと喉の奥に刺さったトゲのように気になっていました。 uske-s.hatenablog.com Twitterでごろりぶさんともそんな話をしたのです。 きちんと比較するなら厳密比較演算子使う…

1if-1for(4):複数のオブジェクトをあるオブジェクトに置き換えたい

久しぶりに1-if, 1-forなスクリプトっす。いや実際にはifがないので1forのみ。 使い方は、 置き換えられるオブジェクトをまとめて選択 置き換えたいオブジェクトを最後にポチッと選択 そんだけ。 Undo(⌘+Z)1回でスクリプト実行前に戻れるオシャレ仕様です…

ExtendScript Debugger for VSCodeがリリースされたので簡単にまとめてみた

v1.1.0がリリース(2019年5月26日追記) おさらい ExtendScript Debugger Plugin 導入前に Windows版はベータ版 プレリリースプログラム参加者へ サポートされた機能 サポートされない機能 プラグインの使い方 launch.jsonの用意 launch.jsonの設定値 debugg…

AppleScriptのwhoseメソッドを真似てみた

標題の通り、Array.prototype.whoseメソッドなど実装してみた。 コード github.com サンプル サンプルコードとしては以下のようにします。 var paraStyles = app.activeDocument.allPagraphStyles; var tgtParaStyle = paraStyles.whose({name: "hoge"}); こ…

InDesign CC2017以降のSUIのデバッグのしにくさが加速

InDesign CC2017以降、ESTKから実行したスクリプトでScriptUIの仕様が変わっているようです。 typeがpaletteのとき、SUIダイアログがwindowのようにアプリケーションの裏側に回り込んでしまうようになりました。 スクリプトを保存し、スクリプトパネルから動…

types-for-adobeによるスクリプト開発:行と段落の選択を支援するスクリプト

スクリプト概要と開発の経緯 Typescriptでのスクリプト開発 スクリプトの動作 スクリプト概要と開発の経緯 DTPTransitさんで少し前から配布していただいているスクリプトがあります。 www.dtp-transit.jp そのコードはこの記事に載せてあります。 uske-s.hat…

InDesign用サンプルスクリプトのリファクタリング(1)

はじめに リファクタリングしよう 実際のコード サンプルコードの解読 main関数 myDisplayDialog関数 myAlignObjects関数 myAlignObject関数 オーバービュー まとめ はじめに InDesignやIllustratorには、最初からサンプルスクリプトがプリインストールされ…

合成フォントの設定を書き出す

あけましておめでとうございます。 今年は週1回の更新を目標にブログを更新していければなーと思ってますが、果たしてどうなるやら。。。 それはさておき、今年最初の記事は合成フォントの設定をテキストファイルとして書き出すスクリプトです。例によって…

DTPerのスクリプトもくもく会#10を開催しました

はじめに 師走になって日に日に寒くなってきたような気がしますが、昨日12/1(土)、DTPerのスクリプトもくもく会#10を開催しました。今回は特別にアナウンスしたり宣伝したりしたわけではなかったのですが、なんと14人の方にご参加いただきました(当もくも…

ESTKが動かない…?

昨日から、どうやらMac版のExtendScript Toolkitで不具合が生じているようです。 動作アプリケーションを指定しても、ESTKで単体のスクリプトとして実行してもこの警告が出ます。 古籏さんの検証では、どうやら日付に問題があるとのこと。 原因&解決方法が…

もくもく会#9 開催報告

先月22日、DTPerのスクリプトもくもく会#9を開催しました。仕事がべらぼうに忙しく、なかなかブログを更新できずにおりました。というわけで開催報告です。 今回はまたコワーキングスペースによる有料開催ということで、最初から6名と少なめの募集にしまし…

表組の列幅をまとめて変更したい

先日、同僚から「表組の列幅をポチポチ手動で決まったサイズに変えていかなきゃいけないんだけど、表組がぶつ切りになっていて辛い。スクリプトでなんとかできないの?」と相談されました。 そのときは適当に5分くらいで書いたスクリプトを渡して事なきを得…

InDesignの合成フォント関係スクリプト3件

Twitterで意外に反響があってびっくりしました。InDesignの合成フォントまわり、本当に面倒なんですよね。やっぱりみんな苦労するところは同じなのか…w さて、合成フォント関係のスクリプトを3つ紹介します。 すべての合成フォントに特例文字セットをまとめ…

ScriptUIを少しだけ簡単に利用するモジュール

随分前のもくもく会で、ScriptUIを楽に生成するモジュールを公開しました。 実はそのモジュールを知っている方が前回のもくもく会にいらしてくださり、使い方について改めて説明しました。 説明していて思ったのですが、コードが、その、なんというか、気持…

1if-1for(3):特定の文字スタイルの次の文字

職場で「ある文字スタイルが当たっている文字の、次の文字をスクリプトで処理したいが可能か?」と聞かれたので、試しに書いてみました。 そしたら結果的に1if-1forで収まったのでここに書いておきます。 この画像は、スクリプトで色が青くなる文字スタイル…

ボタンを横並びにしたカスタムダイアログ

ScriptUIでダイアログを作るのが面倒くさいと思いません? かといってconfirmメソッドの「はい・いいえ」とか「Yes・No」って内容じゃないんだよな…というときありますよね? そういうときのためにちょっとしたカスタムボタンのダイアログです。 コードの最…

1if-1for(2):フレームを線幅分小さくする

前回の記事で合成フォントの削除について書くとか書きましたが、諸事情により、選択したオブジェクトを線幅分小さくするスクリプトになりました。楽しみにされていた方(いるのか?)、申し訳ありません。 なぜかって? 急に欲しくなったからです!! さて、…

IDJS教室のテキストが販売されました

すでにお〜まちさんのTwitterやブログでご存知のかたもいらっしゃると思いますが、IDJS教室で使われたテキストが加筆修正されてBOOTHにて販売されました。 cs5.xyz この機会にぜひお手にとってみてください。 初歩の初歩から、こんなことできる?という細か…

1if-1for:書き捨ての小さなスクリプトたち

最近自分が手がけるスクリプトが、1000行を超える中〜大規模なスクリプトか、こまごまと5分くらいで書いて捨てる30行以内くらいのごく小規模のスクリプトのどちらかになりつつあります。というのも、同僚たちから依頼されたスクリプトに細やかに対応する時間…

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

いただいた質問など 縦組みで奇数ページの最終行の見出しを判別したい ページの左右 テキストフレームの最終行 まとめ SUIのIconButtonがCCのいくつかから表示がおかしい InDesignの検索置換パネルを利用した検索のしかた SUI生成関数 次回告知 先日、DTPer…

withPropertiesとJSON

はじめに withPropertiesに渡す引数の書き方 オブジェクトリテラルとJSON まとめ おまけ はじめに 先日終了したInDesign JavaScript教室(以下、IDJS教室)の参加者の方と、オブジェクトモデルビューアにある「withProperties」という引数の渡し方がわかりに…

スクリプトを開発・運用する際に気をつけていること

はじめに 環境的な前提 OSによらないスクリプト バージョンに限定されないスクリプト ユーザーフレンドリー スクリプト開発・運用の際に気をつけていること 誰が開発した責任を負うのか明確にする 最小限の労力で最大の効果を目指す 動作条件を細かく想定す…

InDesign JavaScript教室、いよいよ明日が最終日です

プログラムの勉強の難しいところ プログラム的な考え方 モチベーションの維持 変数という概念とオブジェクトモデル 次で最後です もくもく会の宣伝 かねてよりお伝えしていた通り、お〜まち(大間知聡)さんが主催されている標題の教室にスタッフとして参加…

ESTKのインターフェイスを今風にアレンジ

ふと思い立って、ESTKのインターフェイスを今風にカスタマイズしてみました。 ちょっとBracketsっぽくなりました? まぁ基本的にBrackets使ってるのでESTKは割とどうでもいいんですが(ひどい 一応、こんなふうな(見た目だけ)モダンな感じにしたい方は以下…

ES3で使うためのArray.filter

【追記 19/4/22 15:08】 それでもやっぱりまだうまく行ってなかったようなので、他所からお借りしました。 【追記 5/30 13:06】 コードに不具合があったため修正しました。あるふぁ(仮)さん、いつもありがとうございます(記事末尾にも追記あり)。 【追記…

ExtendScriptの単位付き計算

【追記 5/28 15:00】 重大な不具合をあるふぁ(仮)さんが見つけてくださったのと、最初に書いたスクリプト(単位付き計算を行う関数)が加算以外に対応していなかったことに気づいたのでここに追記して訂正いたします。 まずあるふぁ(仮)さんからのありが…

ESTKのtargetengineの挙動

ESTKのプリプロセッサディレクティブ、#targetengineについて少し調べたのでメモ。当然すべてInDesignでの検証です。 動的にエンジンを変更できるか 以下のコードをテスト。 #targetengine hoge alert($.engineName); var a = "Hello"; #targetengine fuga a…

DTPerのスクリプトもくもく会#7を開催しました

謝辞 雑感 もくもく成果 想定した処理フロー 実際の処理フロー 変数の定義 同名メニューアクションの絞込み getAreaIndex関数 getMenuAction関数 カラーラベル名の定義 メニューアクションの特定とリスト化 ScriptUIの生成 スクリプト処理 スクリプトコード…

JavaScriptでブラックジャックのコード

先日、JavaScriptでブラックジャックを作る記事を書きました。 uske-s.hatenablog.com もうすぐもくもく会#7ということで、コードを掲載しておきます。 //カードデッキ var deck = deck || [ {value: 1, name: "◆A"}, {value: 2, name: "◆2"}, {value: 3, na…

Illustratorのスクリプト勉強中④

前回までのあらすじ 前回のコード このスクリプトの最終型 今日の目標 前回の補足 値を入力させてそれを受け取る 文字列型から数値型への型変換 水平方向に隙間なく並べる 座標値からソートする 左から順に隙間なく並べる 今日のコード ちょっと間が空いてし…