AlteryxのTipsを不定期にお届けしている週刊(?)AlteryxTipsです。
Alteryxのツールの出力の中で、レポートスニペットになっているもののうちの一部はPDFなどに出力することができません。これらは、CDATAセクションを持っており、たいてい動的に動作するHTMLベースのレポートになっているためです。通常、Alteryx内ではこのようなレポートは画像も持っていたりするのですが(例:インタラクティブチャート)、ネットワーク解析ツールのように持っていないものはそのままではレポートに組み込むことができません。
また、ネットワーク解析ツールは少し特殊で、そのままレンダリングツールを使ってHTML形式で出力することもできません。
今回はこれらの問題について解決していきたいと思います。
ツールのI出力はインタラクティブな出力です
各ツールが持っている出力のうち「I」という名前がついているものは、インタラクティブに出力結果を触ることができます。
例えば、アソシエーション分析ツール。


I出力は、上のスクショの用に、閲覧ツールで見ることができ、マウスでクリックすると、中身の値を散布図で見ることができます。このツールは、内部に画像は持っていないため、PDFなどに出力しようとすると、空っぽのレポートができあがります。このツールに関しては、そのままレンダリングツールを接続し、HTML形式で出力することは可能です。

例えば、ネットワーク分析ツール。

上のように、グラフ構造を表現できるツールです。刺さる時は刺さるツールですが、実務で使ったことは正直無いです(唯一使ったのは、Advent of Codeの2023年25日目です)。
これをそのままレンダリングツールに入れて、PDFで出そうとすると、空っぽのデータになります。また、そのままレンダリングツールを接続しても、やはり空っぽになります。
このツールに関しては、なぜか出力がhtmlpassthroughタグを使っておらず、htmlcontentというタグを使っています。これに対応するためには、htmlcontentをhtmlpassthroughにリプレイスし、レポートスニペットに戻すことで、レンダリングツールを使ってHTML形式に出力することができます。

レポートとして使えるようにPNG化する
ところで、HTMLで出力できたからと言って、PDF形式として保存できたりするわけではありません。
これらを再利用するためには、PNGにしてしまうのが楽かと思います。ということで、今回はコマンドラインでやってみましょう。
最初はPythonツールを使っていたのですが、結局HeadlessChromeを使ったコマンドラインの手法でできることがわかったので、そちらを使っています。HeadlessというのはGUIなし、という意味で考えて頂ければと思います。
HeadlessChromeを使うと、以下のようなコマンドでPNG化できます。
"C:\Program Files\Google\Chrome\Application\chrome.exe" --headless=new --disable-gpu --no-sandbox --hide-scrollbars --screenshot="C:\NetworkAnalysis.png" --window-size=1900,1080 file:///C:/NetworkAnalysis.html
サイズはコマンドライン内で指定できます。
ワークフローとしては、以下のようにコントロールコンテナを使って、HTMLとして保存後に、コマンドラインが動作するように組みます。

さらにPDFなどに組み込みたい場合は、さらにコントロールコンテナを使って、PNGへ変換後に画像ツールで読み込めばオッケーです。
まとめ
- インタラクティブ出力をHTMLで保存する方法をご紹介しました
- HTMLファイルを画像にレンダリングする方法をご紹介しました


コメント