よもやまばなしですが、、、Alteryxのワークフローに埋め込まれた画像を救い出したいと思うことはありませんか?
基本的にワークフローに埋め込まれた画像はBase64エンコードされ、テキストとして埋め込まれます。AlteryxではこのようなBase64エンコードされた画像を元の画像にすることが可能です。
それでは、とあるマクロに埋め込まれたアイコン画像を取得してみたいと思います。
手順
おおまかな手順は以下のとおりです。
- ワークフローをテキストとして読み込む
- 画像部分を切り出す
- Blob変換ツールでバイナリデータへ変換
- バイナリデータを画像として取り出す
1.ワークフローをテキストとして読み込む
まず、データ入力ツールでワークフローをテキスト形式として読み込みましょう。設定は以下のとおりです。

ポイントは、
- ファイル形式は「CSV」
- 区切り記号は「\0」(なしという意味です)
- フィールド長は、大きめに取りましょう。
です。
フィールド長は、デフォルトの設定だと255になっています。このままだと以下のようなエラーが出たりします(改行コードを1行とみなすので、改行コード間の文字数がフィールド長より大きくなると切り捨てが発生します)。

今回は、適当に長めの「65535」にしています。
また、「先頭行にフィールドを含める」オプションのチェックは外しています。
2.画像部分を切り出す
次に、読み込んだテキストデータから画像部分を抽出します。
ちなみに、今回はマクロのアイコン画像を抽出ということで、それっぽいところを調べます。このあたりは雰囲気ですが、やたら長い文字列がある行が該当します。

まずこれを、フィルターツールで抽出します。例えば、基本フィルターで以下のような設定でオッケーです。

その後、このタグの中身をデータとして抜き出しましょう。正規表現ツールが良いです。いろんな表現方法があると思います。例えば以下のような設定です。

.*>(.*)<.*
これにより、以下のようにデータ部分を抜き出せます。

ちなみに、コメントツールの背景画像に埋め込んだ場合は、<BG_Image>というタグ内に格納されています。
3.Blob変換ツールでバイナリデータへ変換
次に、Blog変換ツールを使ってバイナリデータに変換していきます。変換前のデータは、Base64でエンコードされたテキストデータとなります。

Blob変換ツールの設定は以下のとおりです。

- 変換モードは、「Blobフィールドに変換する」
- 「フィールドがBase64でエンコードされたバイナリデータ」を選択
これで、以下のように格納されます。

ここまで行けば、様々な方法で画像を利用できます。
4.バイナリデータを画像として取り出す
例えば、画像として取り出すならレポーティングカテゴリの画像ツールが利用可能です。設定としては、「フィールド内のバイナリデータから画像を取得する」を使います。

これにより、以下のように閲覧ツールで見ることができます。

この場合、ワークフローとしては以下のようになります。

その他、ファイルとして保存するような場合は、Blob出力ツールを使って、以下のようなワークフローとなります。

注意点としては、必ずファイルパスの一部(もしくは全部)となるフィールドが必要となることです。

まとめ
ワークフローに埋め込んだ画像がBase64エンコードされていることがわかれば、簡単に抽出可能です。Alteryxはバイナリデータの扱いに関してはそれほど得意なわけではありませんが、Blob関連ツールの使い方を知っていればいろいろな使い方が可能です。
コメント