0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Tableau】画像埋め込み対応版 Export All のご紹介

Posted at

背景と目的

Tableauユーザーのみなさま
どうもこんにちは٩( ᐛ )و

突然ですが、拡張機能「Export All」をご存じでしょうか?

この拡張機能を使えば、Excelファイルで複数のシートを一括ダウンロードできるため、大変便利ですよね!

しかし、ダッシュボード内に埋め込んだ画像をそのままExcelへ出力したい場合、既存のExportAllでは Tableau上で画像化 していたとしてもURL文字列のままエクスポートされてしまいます。

もちろん、ダウンロードしたExcelファイル上でIMAGE関数やマクロを用いて画像を表示させることも可能です。
とはいえ、作業工程が増えて運用の手間になることもしばしばです。。

そこで、特定のカラムについて「Excelに画像を埋め込んだ状態でエクスポートする」機能を追加したFork版を作成しました🎉

Fork版リポジトリ

これを用いればURL文字列での出力にとどまらず、実際にセルに画像として配置されることで、エクスポート後の編集を省き、よりスムーズなレポート運用を実現できます。

導入方法

  1. trexファイルのダウンロード
    Fork版はTableau MarketPlaceには公開していないため、GitHubリポジトリから直接ダウンロードします。
    ExportAll.trex

  2. 拡張機能の設定
    Tableauでダッシュボードに拡張機能を追加する際、拡張機能URLに以下を指定します:
    https://bucolic−sundae−b29dc2.netlify.app
    その後、ダッシュボードに 1. でダウンロードした.trexを指定します。

上記URLは私がNetlifyにホスティングしているものとなります。
ご自身でホスティングすることも可能です。
2. ホスティング環境

使い方

基本的な使い方は本家Export Allと同じですが、「SelectColumns」タブに「Is Image」というチェックボックスを追加しています。

スクリーンショット 2025-04-06 17.57.52.png

このチェックボックスをオンにすると、該当するカラムはExcel出力時に画像として挿入されます。↓

チェックを入れなければ従来通りURL文字列として出力されるため、既存のワークフローを崩すことなく利用できます!

技術的な要素

1. ExcelJSの導入

画像をExcelに直接埋め込むために、Node.js用のライブラリExcelJSを採用しています。本家で用いられているxlsxライブラリでは画像埋め込みができないため、Fork版ではExcelJSに切り替えました。

なお、ExcelJSには潜在的なバグがあるらしいので、特定のケースで予期せぬ動作をする可能性があります。
その場合はIssueにて報告いただけますと◎

2. ホスティング環境

Fork版の拡張機能はNetlify上でホスティングしています。

当初は本家同様にVercelを検討しましたが、VercelではNodeのバージョンが18.x系以上しか選択出来ず、本家ExportAll(おそらく14.x16.x系)との互換性が問題となった経緯があります。

ご自身でホスティングしたい場合は、リポジトリをForkしたうえで npm run release を実行し、生成されるbuildディレクトリを配信してください

その場合、.trexファイルのurlディレクティブをご自身の配信ドメインに変更することをお忘れなく ;)

3. CORSの設定

画像を読み込むためにJavaScriptの fetch APIを使用しているので、画像を配信するサーバー側でCORSを行う必要があります。

まとめ・考察

ExportAllは非常に便利な拡張機能ですが、クロス集計に対応していないのが唯一の難点であり、このFork版でも同様です。

一度自身で実装を試みたのですが、Tableau Extensions APIがクロス集計に向けたAPIを提供していない都合上、自身でセルを取得しそれを整形する必要がありました。
その結果、ワークブック毎に独自実装が多くなり、汎用的にすることはなかなか難しかったです。

ま、ま、まぁ実装できなくはなくはないですが、この余白はそれを書くには狭すぎるということで・・・。

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?