メインコンテンツへ移動

ファイル

ワークシート内でファイル名から添付ファイルの紐付け先レコードを特定する方法​

オブジェクトストア上の保存ファイル名(例: bR2HbXfudAfo9JafdveE4K0C9J2g519Gae3d4I84820k8a9Bee3t5I914q5J4p6e.pdf )をもとに検索します。 MongoDBの mdattachment コレクションで該当する docid を検索してください。

> use mdattachment
> db.attachment.find({"name": "52a9dF0c71fscg6P9Lahfc5B41d4c0dv5FasdM5a5LaQdoaE9V1x64aK04en3Ydu.pdf"}).pretty()
{
"_id" : ObjectId("6413d880840db440e5f5a7be"),
"docid" : "a234f6ca-6bf2-4491-9261-e24758376b91",
"fid" : "a234f6ca-6bf2-4491-9261-e24758376b91",
"server" : "https://hap.domain.com/file/mdoc/",
"oFilename" : "APaaSテストファイル",
"path" : "doc/20230317/",
"name" : "52a9dF0c71fscg6P9Lahfc5B41d4c0dv5FasdM5a5LaQdoaE9V1x64aK04en3Ydu.pdf",
......
}
  • docid を取得(例:a234f6ca-6bf2-4491-9261-e24758376b91)
  • oFilename はワークシートレコードに保存されている実際のファイル名です。

docid をもとにリレーションテーブルでコントロールIDを検索します。

> db.attachmentrelation.find({"docid" : "a234f6ca-6bf2-4491-9261-e24758376b91"}).pretty()
{
"_id" : ObjectId("6448eb672d71e11d04aae297"),
"docid" : "a234f6ca-6bf2-4491-9261-e24758376b91",
"fid" : "a234f6ca-6bf2-4491-9261-e24758376b91",
"fType" : 9,
"pids" : [
"eaf823e5-4205-44fd-8521-109d3ec29a92"
],
"ctime" : ISODate("2023-04-26T09:14:15.289Z"),
"sourceid" : "bac739dc-9f8f-4ea5-a1f8-bdea56d27b81",
"commentid" : "6448eb5c12053cf665be2131"
}
  • fType = 9 の場合、commentid はコントロールID、sourceid はレコードIDです。
  • 取得したコントロールIDは commentid (例:6448eb5c12053cf665be2131)
  • 取得したレコードIDは sourceid (例:bac739dc-9f8f-4ea5-a1f8-bdea56d27b81)
  • sourceid は mdwsrows における該当ワークシートの rowid です。
  • commentid は mdworksheet の wscontrols における cid です。

wscontrols で commentid からワークシートIDを検索します。

> use mdworksheet
switched to db mdworksheet
> db.wscontrols.find({cid:"6448eb5c12053cf665be2131"}).pretty()
{
"_id" : ObjectId("6448eb5c12053cf665be2136"),
"cid" : "6448eb5c12053cf665be2131",
"wsid" : "6448eb5c12053cf665be212e",
......
}
  • wsid がワークシートIDとなります。例:6448eb5c12053cf665be212e

下記URLにアクセスすることで、検索されたファイルが添付されたワークシートに遷移できます。

下記URLにアクセスすることで、検索されたファイルが添付されたレコードに直接遷移できます。

ファイルの物理削除を有効にする方法​

標準では、ファイルを削除してもオブジェクトストレージからは物理削除されません。削除済みファイルをクリーンアップするには、以下の環境変数を追加してください。

環境変数説明標準値
ENV_FILE_DELETE_ENABLE_PHYSICALファイルの物理削除を有効にするかfalse
ENV_FILE_DELETE_BEFORE_DAYSENV_FILE_DELETE_ENABLE_PHYSICALがtrueの場合のみ有効。何日前より古いファイルを物理削除するか7
ENV_FILE_DELETE_TASK_CRONENV_FILE_DELETE_ENABLE_PHYSICALがtrueの場合のみ有効。定期タスクの実行時刻0 0 1 * * ?(毎日午前1時)

物理削除を有効にすると、以下の対応する操作でファイルを削除した際、物理削除も実行されます。

対応状況操作
✅ 対応レコード詳細画面で添付ファイルフィールドから添付ファイルを削除する
✅ 対応1件のレコードを手動で削除し、ごみ箱を空にする
✅ 対応現在のページのレコードを手動で削除し、ごみ箱を空にする
❌ 非対応一覧で現在のページを選択し、編集から添付ファイルフィールドを一括クリアする
❌ 非対応一覧ですべてのレコードを選択し、編集から添付ファイルフィールドを一括クリアする
✅ 対応ワークフローの更新ノードで1件のレコードの添付ファイルフィールドを更新し、クリアを選択する
✅ 対応ワークフローの更新ノードで複数レコードの添付ファイルフィールドを更新し、クリアを選択する
✅ 対応APIで更新ノードを通じて添付ファイルを更新し、データを上書きして古い添付ファイルを削除する
❌ 非対応APIで1件のレコードを削除する
❌ 非対応APIで複数レコードを削除する
❌ 非対応すべてのレコードを手動で削除し、ごみ箱を空にする
❌ 非対応ワークフローで1件のレコードを削除し、ごみ箱に入れないことを選択する
❌ 非対応ワークフローで複数レコードを削除し、ごみ箱に入れないことを選択する
❌ 非対応ワークシート全体を直接削除する
❌ 非対応アプリケーション全体を直接削除する

非対応の操作では、一括削除時に添付ファイルの状態を追跡できないため、対応する添付ファイルを物理削除できません。