見出し画像

【InDesignの学び】人生初のスクリプトを作る 『セルの塗りを検索・置換』

初めてInDesignで使用するスクリプトを作りました。
セルの塗りを検索置換するものと、セルの塗りを反復させるものです。
「作りました」と書きましたが、ChatGPTにコーディングさせました。

スクリプトを作るに至った経緯と、感想を記録します。

※スクリプトを作るまでの前置きが非常に長いです。また、スクリプトを作成する具体的な方法については記載していません。
この記事は『なぜスクリプトが必要になったか』という日々の困りごとや手順について考えたことを記録するために書いています。
お時間のある方や興味のある方はどうぞお付き合いください。



発端は「セルの塗りを検索置換したい」という日々の困りごとからでした。



セルの塗りを検索置換したい

InDesignで表を作り、塗りのパターンを『1行ごとに反復』を設定します。
例えば
1行目:紙色
2行目:緑
とします。このうち、A列の緑をグレーにしたい場面があります。

まとめて[黒]を当てないで、緑のセルだけ選択して当てればいいんですよね。
でも、それ言っちゃうとこの記事の半分以上が不要になっちゃうんで
このまま行きます(後から気づいた)


こうした塗りのイレギュラーには手動でスウォッチを当てていましたが、理想とは違う挙動です。

しかも、100%になることもあれば、30%の濃度になることもあります。
なぜ?

原因は塗りの設定濃度が反映されるからです。

スウォッチの濃度を設定した後で[紙色]を選択すると、直前に設定した濃度を保ったまま[紙色]が適応され、濃度を変更することができなくなります。紙色には濃淡は反映されません。

その後で、紙色を別のスウォッチに変更するとグレー表示になっていた濃淡が復活し、反映されます。

正しい挙動(というか当たり前のこと)なのですが、紙色は紙色のままだろうと思い込んでいたので、ビビりました。

理由はわかったけれど、結局手動で直すしかないのか…

『紙色→塗りなしにする』も良いのですが、これで対処するのが難しい場面も多々あるし…。『紙色を指定する場合には濃度を0%』にする方法も考えましたが、別のミスやトラブルになりそうなので別のアプローチを考えます。

やりたいことは
・指定した範囲内の
・(今回は)[黒]100%のセルの塗りを検索して
・別の色に置換したい

です。


ちょっと脱線 [カラーの検索と置換]


記事の執筆中に気がつきました。
InDesginでは『カラー』も『検索と置換』ができます。セルの塗りや線も対象になります。

しかし、今回の[黒]100%を検索する事例においては、別のアプローチを考えることとしました。
理由は、検索の対象が『ドキュメント』のみであり『選択範囲内のセル』を指定することができないことから生じる以下の3点が使用しづらいと感じたからです。

  1. 該当箇所を選択するまでに、ひたすら『次を検索』をクリックしなければならない

  2. 選択されている箇所が確認しづらい

  3. 文字など、意図しない箇所を置換してしまう可能性がある。

ドキュメント全体の中で変更したいカラーがある場面や、検索したいカラーの適用箇所が限定されている場面では、非常に頼もしい機能です


正規表現で検索・置換ができるかな…!?


先日、セミナーに参加して『正規表現は、スーパー検索・置換である』という考え方を学びました。なんでも検索できると勘違いし、「メタ文字を使えばセルの塗りを検索・置換できる」と思い込んでいました。

正規表現はテキストが対象であり、表やセルを正規表現で検索することはできません。もう少し調べると、スクリプトを使えばセルそのものの検索ができるようだと分かりました。

正規表現はテキストを見つけるために使う道具で、
スクリプトは自分の代わりに作業してくれるロボットと考えると少し理解が進みます。


スクリプトかぁ…。

未知の領域なので、ここで諦めようと思いましたが、ふと、身の回りの人の声が蘇ってきます。

「最近、ChatGPTを使って〜…」
「ChatGPTに〜…」
「ChatGPTを〜…」

……やってみるか。ChatGPT……



できた!!

…できちゃった…。とりあえず動いた程度だけど…!!
スクリプトを作る前は[黒]100%にこだわっていたけれど、任意のスウォッチの方が使い勝手が良いと気が付きました。

まず、ChatGPTに「InDesignでセルの色を検索置換するスクリプトを作りたい」と話しかけてみました。仕様も条件もへったくれもありません。すると必要な条件を聞き返してコードを書いてくれます。うおぉすごい…。
その後はコードを書いてもらうたびに試運転し、
「ダイアログパネルがほしい」
「スウォッチを参照して」
「濃淡のスライダをつけて」…と追加オーダーを繰り返して出来上がりました。(これでいいのか…?)

筆者はコーディングの知識を一切持たずにオリジナルスクリプトを手にいれることができました。嬉しい反面、恐ろしく思います。この数日前まで公開されたコードをスクリプト形式に保存するところでつまづいていたのに…。


もっと便利にしたい

恐ろしいなどと言いつつ、欲が出ます。

セル結合した時に塗りの反復が保持されないことも日々の困りごとでした。
結合が発生するたびに塗りのパターンが崩れていないか確認・修正しなければならず、時間を取られます。

選択範囲のセルの塗りを反復させる命令をしたら一発で解決できるのでは?


できた!!

…できた。
先ほどと同じ工程を繰り返し、とりあえず塗りが反復できるようになりました。さっき作ったやつより、こっちの方が便利!やったー!

作り方に関しては、この進め方で良いのか分からない&同じことを何回もさせられるChatGPTが可哀想(自分もしんどくなってくる)なので検討の余地あり。
ですが、思い描いたことが実現するのは達成感があってうれしいです。


やっぱりコーディング(プログラミング)の知識が必要

完成したことは嬉しいのですが、やはり頼り切りというのは危険だし、不安なことがたくさんあります。
完全に見切り発車で始めましたが、順をおって勉強してから臨むべきでした。簡単に手に入れられてしまうからこそ、知っておくべきことがあると感じました。

私が普段使用するアプリケーションはInDesignですが、もし、InDesignの操作がAIでできるようになって、全く知識のない人が「作りました!」と言っていたら不安になると思います。「基本的な操作や、制作物のことを知っておいた方がいいよ」とアドバイスすると思います。(AIの方が私よりも使いこなせる未来なのかもしれないけど)

不具合が起きても対処ができません。細かい調整もできません。
例えば、paperを[紙色]と表示したいのですが、何度挑戦しても改善しませんでした。どこを改善すべきか・具体的な解決策が分からない→曖昧な指示しかできない→そのうち別のエラーが出てきたりして収拾がつかなくなって諦めました。

何十回もプロンプトを書き直すよりも、自分でコードを書き直せた方が合理的なのではないかと思います。

また学ぶものが増えたな…。何かひとつ取り組むと、いくつも足りないものが出てきます。


その後

ポストがDTP Transitさんまで届いて(びっくりした)、スクリプト開発に取り組まれていました。すごい!!うれしい!!!
(勘違いから始まったとは恥ずかしくて言えない…すみません)

こちらの記事は必見です。
同じように困っているたくさんの人に届きますように。

自作のスクリプトとは異なる点が多々あります。
5%刻みのスライダー・プレビュー表示される・色を『交換する』など。自分で作った(作らせた)スクリプトと比べると「その機能がほしかった!」が満載の仕様です。
スクリプトは想像しているよりずっと多く(細かく)設定できることもわかりました。私がスクリプトで何が出来るのか理解できていないということです。公開されたコードを観察することでブラッシュアップできそうです。

それにしても、新幹線の中で作ったんですか……?!?!?!移動中に……?????インスピレーションの差よ!

普段は支給されたスクリプトを使用することがほとんどです。自分で作って(AIにコードを書かせて)みると、『何をどのように実現したいのか』を明確に指示する力が必要と分かります。
考え方や視点を磨かなくてはならないのですね…コーディングにはディレクション力も求められる。

そもそもスクリプトの基礎知識から身につける必要があります。
最近は、何をやっても『さらに学ぶべき』という感想ばかりで収集がつかなくなっています。


正規表現への勘違いから始まった取り組みでしたが、たくさんの気づきが生まれたので、結果としては良かったと思います。

初めてChatGPTを使ってみて、周りの人が便利!面白い!!という理由がわかった気がします。非常に今更なんですが…。

自分にとっての上手な付き合い方を考えたいです。


ここまで読んでくださった方へ。最後までお付き合いくださりありがとうございました。

ポストしたのが10日も前で、記事を書くのにこんなにモタモタしています。もう少しスピード感を持って執筆したいです。

12月の3分の1が過ぎてしまいましたね…。
ちょっと前にサンタクロースが日本に到着したというニュースを見ました。
皆さんは、自分へのクリスマスプレゼントはもう用意しましたか。

全てのInDesignユーザーに、嬉しい発見がありますように〜


いいなと思ったら応援しよう!