
こんにちは。CData Software Japan の色川です。
「kintone と基幹システム」や「kintone と特定業務に特化したSaaS」などとの連携自動化はCData Arc の中でも人気の高い連携シナリオですが、それ以外にも良く活用いただいているシナリオが、以前こちらの記事などでもご紹介したkintone の添付ファイルに関する連携の自動化です。以前の記事ではシンプルなダウンロードフローとしてご紹介しましたが、数年前を経た現在でも良く関心をいただく記事です。
社内外や企業の大小を問わず、kintone の利用が広がる中、他のアプリケーションやシステムに連携したいドキュメント(ファイル)のやり取りにkintone を活用されているケースも多いかと思います。ただ、以前の記事で紹介した連携フローの場合、添付ファイル(FILE)フィールドに複数のファイルが登録されるような運用条件などにおいては、そのままではフィットしにくいケースもありました。
そこで、この記事では「CData Arc で、kintone の添付ファイルフィールド(複数ファイル)からのダウンロードを自動化する方法」をご紹介します。
この記事のシナリオ
この記事では、kintone サンプルアプリの「ファイル管理」を利用して試してみます。連携元(ダウンロード元)として利用する「ファイル管理」アプリには「ファイル」フィールドに複数の添付ファイルを含むレコードも登録しています。

また「アプリからの一括取得」だけではなく「更新のあったレコードのみからダウンロード(して連携したい)」なども、比較的ご相談いただくケース事が多いポイントです。そのためこの記事では「ファイル管理アプリのレコードを条件にあわせて取得」して「条件に一致したレコードに含まれる添付ファイルレコード群の情報を検索・取得」した後に「添付ファイルごとにダウンロードリクエストして保存」するといったフローにしています。実際の業務で自動化を検討される中では、レコードを取得する際の条件なども様々かと思いますが、ベースとして利用いただきやすいフローになっているのではないかと思います。

なお、この記事を読み進めていただく際は、フローの中で活用している「テーブル値関数(Table-Valued Functions)」をご紹介している以下の記事もあわせて確認いただけるとスムーズです。
連携フローの作成
それでは「kintone の添付ファイルフィールド(複数ファイル)からのダウンロードを自動化」する連携フローを作成していきます。このシナリオで作成する連携フローは以下のような流れになっています。
# |
コネクタ |
内容 |
1 |
Kintone |
kintone の「ファイル管理」アプリから条件に一致するレコードを取得 |
2 |
Kintone |
kintone の「ファイル管理」アプリから1. で取得したレコードに一致する添付ファイルレコード群を検索・取得 |
3 |
XML Map |
2 のデータを4 にマッピング |
4 |
Kintone |
kintone からDownloadFile ストアドプロシージャで添付ファイルをダウンロードして保存 |

1. Kintone コネクタ(アプリレコードを取得)
最初に「ファイル管理」アプリから条件に一致するレコードを取得するKintone コネクタを「Select アクション」で構成します。

kintone への「接続」を構成したら「テーブルの追加」で「ファイル管理」アプリを選択します。

「ファイル管理」アプリから取得するレコードの条件を設定する場合は「フィルタ」などを利用します。高度な設定では、指定した日時フィールドでの差分取得(前回のフロー実行以降に更新されたレコードの差分抽出)も簡単に構成することができます。

期待どおりのデータが取得できるかは「XML 出力をプレビュー」で確認するのが便利です。ここで「サンプルデータを保存」しておくと、後続のコネクタでの設定がよりスムーズに進みますのでお奨めです。この記事では「RecordId」と「タイトル」のみを選択して取得しています。

2. Kintone コネクタ(添付ファイルフィールドを検索・取得)
次に、「ファイル管理」アプリから1. で取得したレコードに一致する添付ファイルレコード群を検索・取得するKintone コネクタを「Lookup アクション」で構成します。このフローでポイントなる部分の1つです。

さきほど作成したkintone への「接続」を選択したら「サンプルファイル」で1. のコネクタで保存したサンプルファイル(connector://コネクタ名:mapping.xml)を選択します。

この記事では、Lookup の設定で「> クエリ」モードを利用します。「アウトプットデスティネーション」に検索・取得する添付ファイルレコードのデータを追記する位置や名称をXPath で指定します。この記事では「/Items/ファイル管理」の配下に「Files」ノードとして追加されるように構成しました。

Lookup する「クエリ」では「処理対象となるインプットファイルに含まれるRecordId に一致するレコード(A.`RecordId` = ${XPATH:/Items/ファイル管理/RecordId})」を条件に「添付ファイルフィールド(ファイル Aggregate カラム)をJSONTABLE() を利用してテーブル形式として扱って検索・取得(CROSS APPLY JSONTABLE(A.`ファイル Aggregate`) WITH)」します。この記事のシナリオでは、複数の添付ファイルが構成されているレコードもありますので、あわせて「最初の結果を使用」を無効化して、複数の結果をLookup で取得できるように構成しておきます。
SELECT X.fileKey, X.name, X.contentType, X.size, RANK() OVER (ORDER BY X.fileKey) AS Rank FROM `ファイル管理` A CROSS APPLY JSONTABLE(A.`ファイル Aggregate`) WITH (fileKey VARCHAR(255), name VARCHAR(255), contentType VARCHAR(255), size Integer) AS X WHERE (A.`RecordId` = ${XPATH:/Items/ファイル管理/RecordId})

この部分については、少し応用的な設定とも言えますので、さきに触れたこちらの記事もぜひご確認ください。
Lookup アクションで期待どおりのデータが取得できるかは「Lookup をテスト」で確認するのが便利です。ここで「サンプルデータを保存」しておくと、後続のコネクタでの設定がよりスムーズに進みますのでお奨めです。

4. Kintone コネクタ(添付ファイルをダウンロード)
次に、DownloadFile ストアドプロシージャで添付ファイルをダウンロードして保存するKintone コネクタを「Execute Stored Procedure アクション」で構成します。

さきほど作成したkintone への「接続」を選択したら「ストアドプロシージャ」で「DownloadFile」を選択します。

3. XML Map コネクタ
最後に「Lookup して添付ファイル群を配下に含んだアプリレコード」を「添付ファイルをダウンロードするストアドプロシージャにマッピング」するXML Map コネクタを構成します。この記事では2 と4 のフローをつないだ後に、フローの中央「+」からXML Map コネクタを追加しました。

添付ファイルをダウンロードする「DownloadFile」ストアドプロシージャは以下のようなパラメータで利用することができます。

XML Map コネクタのマッピング設定で「Lookup した添付ファイル(Files)ごとに、添付ファイルをダウンロードするストアドプロシージャが繰り返し実行されるようにマッピング」します。この記事のシナリオでは要素の値のみしか利用しませんので「アトリビュート(属性)を非表示」にしてマッピングすると、より分かりやすいかも知れません。

この記事では、ダウンロードした添付ファイルの出力先(LocalPath)は、Arc のVault 機能を利用しています。Vault を利用すれば出力先をフローへの影響なく変更することができるので便利です。

ソースの内容(2. のアウトプット)を、DownloadFile ストアドプロシージャ(4. のインプット)に対して、以下の内容でマッピングします。
宛先 |
内容 |
DownloadFile |
ソースの「Files」をマッピング(繰り返しポイントを示すマッピングループ) |
FileKey |
ソースの「fileKey」(Items/ファイル管理/Files のfileKey) |
LocalPath |
{任意のディレクトリ(この記事では「C:\Output\」を設定したValut)} + ソースの「RecordId」( [Vault("OutputDir") | concat([xpath("../RecordId")])] ) |
FileName |
ソースの「name」(Items/ファイル管理/Files のname) |
GuestSpaceId |
null("空をnull として扱う"を有効化) |
Encoding |
null("空をnull として扱う"を有効化) |
FileStream |
null("空をnull として扱う"を有効化) |

マッピングが出来たら、期待通りのマッピング内容になっているか「テスト」で確認してみます。LocalPath などを含め、期待通りに構成できていることが確認できます。

これで「CData Arc で、kintone の添付ファイルフィールド(複数ファイル)からのダウンロードを自動化する」フローができあがりました。

お役立ち情報
基幹系システムのFit to Standard とkintone によるSide-by-Side 開発事例・連携ポイントを徹底解説
- SAP など基幹システムの標準機能で対応できない業務をどうする?
- kintone での業務改善を検討しているが、基幹システムとの連携はどうする?
- kintone と基幹システムとの連携に最適なツール・コネクタにはどんなものがある?
ホワイトペーパーを無料で読む
連携フローの実行
作成したフローを実行して確認してみましょう。起点となるKintone コネクタからフローを実行してみます。「トリガー開始」から「手動で受信」を実行します。これは起点となるKintone コネクタのアウトプットタブから「受信」を実行することと同様です。

4. のKintone コネクタのアウトプットタブでは、ダウンロードした添付ファイルの数分のストアドプロシージャ実行が確認できます。

各トランザクションのメッセージビューアでは、個々のメッセージ単位でフローの一連の実行結果が確認できます。

LocalPath に指定したディレクトリを確認すると、期待通りにダウンロードされていることが分かります。


まとめ
この記事では、CData Arc を利用して「kintone の添付ファイルフィールド(複数ファイル)からのダウンロードを自動化する」方法をご紹介しました。
kintone の添付ファイル連携と、ひとくちに言っても、必要となる業務的な条件はさまざまかと思います。この記事では「レコード単位」や「添付ファイル単位」で連携フローを調整しやすく、あまり複雑なマッピングを必要としない構成を選択しています。他にも、シンプルな一括ダウンロードのみであれば、Arc からkintone コマンドラインツール(cli-kintone)を利用するアプローチなども(既にcli-kintone を利用していてダウンロード後の連携を拡張したいシーンなどでは特に)検討いただきやすいかも知れません。
またkintone からダウンロードした添付ファイルを、Box をはじめとしたクラウドストレージ等へ連携した場合は、ダウンロードしたファイル群に対して、Arc のMFT Connectors を利用するフローを構成すればシンプルに実現することができるでしょう。
CData Arc はシンプルで拡張性の高いコアフレームワークに、豊富なMFT・EDI・エンタープライズコネクタを備えたパワフルな製品です。CData Drivers との組み合わせで275を超えるアプリケーションへの連携を実現できます。
皆さんのつなぎたいシナリオでぜひ CData Arc を試してみてください。
CData Arc - セキュアなデータ連携とマネージドファイル転送(MFT)
製品を試していただく中で何かご不明な点があれば、テクニカルサポートへお気軽にお問い合わせください。
CData Software Japan - Support Form
この記事では CData Arc™ 2025 - 25.1.9211.0 を利用しています
関連コンテンツ