DTP作業者にとっての難易度 ★☆☆☆☆(1)
昨年Twitter(X)で「値の分からない円グラフから値を得る方法はないか」とやりとりしたことがありました。その時「できそうだな」とは思ったのですが実務で必要になる場面もなかったので忘れていました。今回、思い出してスクリプトを書いてみました。使い方
円グラフを構成するオブジェクト(扇形)群を選択してスクリプトを実行するだけです(グループ化されていてもOK)。Illustratorファイルと同階層に生成されたテキストファイルをExcelなどにペーストしてご活用ください。※円グラフがIllustratorのグラフ機能で作成されている場合は、そちらから値を得たほうが確実なのでスクリプトを終了します。
※生成したテキストファイルでは検算により各値の合計値を算出していますが、確実かどうかは確約できません。ご自身でExcelなどで更に検算されることをお薦めします。
以下、動画をご覧ください。
使い方は簡単なのですが今回は考えた過程を記録しておくことにします。
※テキストファイルの座標や面積の値の単位はptです。Illustratorでは環境設定の単位をミリにしていても得られる値はptのようです(おそらく)。
Illustratorのスクリプトにした理由
Illustratorでは「.area」というプロパティでオブジェクトの面積を得ることができます。InDesignにはこのプロパティはないので慣れないIllustratorのスクリプトを書くことになりました。今回のスクリプトの考え方
オブジェクト(扇形)それぞれの面積を求めることは難しくありません(グループ化されているオブジェクトの階層を掘るのは面倒ですが検索したところ@AJABONさんの書き込みがあったので拝借しました)。まずは各オブジェクトの面積をかき集めます。問題になるのは扇形の順番です。中心よりも右側のオブジェクト
各オブジェクトの位置を把握する時に注目したのは各オブジェクトの「センターの座標」です。「センターの座標」がグラフの中心よりも右側にあるオブジェクトでは上のものほど円グラフの項目順では上(若いもの)だと判断し、ソートしました。中心よりも左側のオブジェクト
「センターの座標」がグラフの中心よりも左側にあるオブジェクトについては「センタ−のY座標」の逆順にソートしました。これらを合体することで全オブジェクトが元の項目順に並ぶことになります。
円グラフの中心のX座標
上記で使用した円グラフの中心のX座標は「右端のオブジェクトの右端の座標(最大値)」と「左端のオブジェクトの左端の座標(最小値)」から求めます。スタート時は仮に右端の座標を極端に小さな値、左端の座標を極端に大きな値にしておき、扇形オブジェクトを1つずつ順番に観察します(スクリプトでは「for文で回す」などと表現されます)。観察した扇形オブジェクトの右端の座標が仮設定値よりも大きければ値を上書きする……ということを繰り返すと全オブジェクトの最大値が得られます。同様に左端の最小値も得られます。これらの平均値が「円グラフの中心のX座標」となります。……といったスクリプトです。あまり活用される場面はないと思いますが役に立つ機会があれば幸いです。
サンプルデータはこちら《2025_0822g.zip》です。
※なお、棒グラフから値を求めるスクリプトについては「https://mottainaidtp.seesaa.net/article/465262161.html」、折れ線グラフについては「https://mottainaidtp.seesaa.net/article/465290812.html」で公開しています。ご興味のある方はご覧ください。

