はじめに
プリザンターの添付ファイルをサイト単位で一括ダウンロードするツールを作成したので紹介します。添付ファイル項目だけではなく、内容・説明・コメントに貼り付けられている画像のダウンロードにも対応しています。
2025/04/07に添付ファイル項目以外にファイルの貼り付けが可能なv1.0.1をリリースしました。このページの内容はそれに準じて編集をしています。v1.0.0をお持ちの場合はv1.0.1以降に更新して使用してください。
主な使用目的
添付ファイル項目のバックアップなどファイルの実体をまとめて用意する必要があるケースを想定しています。
プリザンターの添付ファイルの保存方法には、
- Database:データベースにBASE64化して保存する方法
- Local:データベースにメタデータを、実体はバイナリデータをファイルに格納しファイルシステムに保存する方法
の2つがあります。Database
の場合はデータベースのBinaries
テーブルの中のBASE64文字列を操作する必要が、Local
の場合はファイル名がGUIDに変換されているためデータベースを参照してファイル名を探す必要が、と、いずれも面倒な操作が必要になります。
このツールを使用することで、それらの操作を一切必要とせず、サイトIDを指定するだけでサイト単位にファイルをまとめてダウンロードすることがきます。
使い方
.NET 8がインストールされている環境であればWindowsに限らず、MacOSやLinux環境などでも動作します。プリザンターのVer. 1.4.*系が動作する環境であれば問題無く動作します。
コマンドラインでの実行となります。
dotnet pleasanter-items-attachments-downloader.dll /Url:{URL} /SiteId:{SiteId} /ApiKey:{APIキー} /Path:{出力先} [/Skip:{除外する項目}] [/Target:{包含する項目}]
パラメータ | 説明 |
---|---|
/Url | プリザンターの動作している環境を指すURLを指定します。サブディレクトリ環境で運用している場合はサブディレクトリまで指定してください。 |
/SiteId | サイトIDを指定します。 |
/ApiKey | APIキーを指定します。サイトIDに指定したサイトに対して「読取り」「サイトの管理」の2つの権限が必要になります。 |
/Path | 出力先のパスを指定します。このパスは実在する必要があります。 |
/Skip1 | 除外する項目をAttachmentsAなどの物理名を指定します。添付ファイルA、説明Cなどと複数の項目を指定する場合は、カンマ区切りで連結してください。(例:AttachmentsA,DescriptionC )Community Editionだけではなく、Enterprise Editionの拡張項目001~100にも対応しています。 |
/Target1 | 包含する項目をAttachmentsAなどの物理名を指定します。添付ファイルA、説明Cなどと複数の項目を指定する場合は、カンマ区切りで連結してください。(例:AttachmentsA,DescriptionC )Community Editionだけではなく、Enterprise Editionの拡張項目001~100にも対応しています。 |
同じパスに同じサイトで複数回実行した場合は、ダウンロード済みのファイルは上書きされます。一方的にダウンロードするだけなので、プリザンター側で削除されていたとしても、ローカル側のファイルの削除は行われません。
また、例外処理がかなり大雑把なので、何か1つの処理が失敗すると以降の処理が打ち切られます。例外内容については画面に出力されるので、そちらを参考にトラブルシュートしてください。GitHub(後述)でIssueを上げてもらえれば、対応出来る範囲では対応します。
実際の動き
実行すると指定したパスの配下に次の様な構造でファイルを出力します。
実際の出力をTreeコマンドでみると次の様になります。
E:\Temp
└─[3526345]記録テーブル(子テーブル)
└─[3528504]ううううう - コピー)12 - コピー - copy - copy
└─[AttachmentsA]
[111455]log174_2503170830.xlsx
[111456]log174_2503170830.csv
[111457]log000_2503180830.csv
ダウンロード
GitHubのPleasanter Developer Communityでソースコードごと公開しています。ライセンスはMIT Licenseなので、ご自由にご使用ください。
pleasanter-items-attachments-downloaderがプロジェクトになります。Releaseから最新リリース分のバイナリがダウンロード出来ます。
まとめ
今回はプリザンターから添付ファイルをまとめてダウンロードしてくるツールを紹介しました。使い方はアイデア次第なところがありますので、是非使ってみてください。