こんにちは。CData Software Japanの色川です。
kintone で複数レコードの添付ファイルをまとめて処理(取得したり、更新したり)したいケースがありますよね。
この記事では、ArcESB を使ってノーコードでkintone の添付ファイルを一括ダウンロードする方法をご紹介します。
反対に「kintone の添付ファイルを一括アップロードする方法」についてはこちらをご覧ください。
ArcESB とは?
ファイル転送(MFT)とSaaSデータ連携をノーコードで実現できるデータ連携ツールです。ファイル・データベース・SaaS API、オンプレミスやクラウドにある様々なデータをノーコードでつなぐ事ができます。
この記事のシナリオ
この記事では「kintone アプリの各レコードに含まれている添付ファイルフィールドから、ローカルフォルダへ一括でダウンロードする」シナリオを実現します。
具体的には「kintone 標準アプリ「顧客リスト」の各レコードに含まれている「会社ロゴ」フィールドにあるファイル(画像)を、ローカルフォルダ(C:\Temp\kintone\out)へレコード番号別にフォルダを分けた形でダウンロードして取得」します。
<ダウンロード先のローカルフォルダ> ├─ <レコード番号> フォルダ │ └ <kintone に登録されているファイル名> ├─ <レコード番号> フォルダ │ ...
なお、この記事では説明をシンプルにするために、各レコードの「会社ロゴ」フィールドには添付ファイルが1つずつ登録されていることを前提にしたフローになっています。
必要なもの
この記事のシナリオでは以下の製品を利用します。すべて30日間のトライアルが提供されています。ぜひお手元で試してみてください。
製品のインストール等はこちらの記事を参考にしてください。
kintone の事前準備
今回kintone 側は、サンプルデータ付きの顧客リストアプリをそのまま利用しています。レコード番号1、2、3の会社ロゴフィールドに画像を登録してあります。
ArcESB の基本的な使い方
ArcESB の起動方法や基本的なフローの作り方についてはこちらをご覧ください。
はじめに(連携フローの概要)
このシナリオで作成する連携フローは以下のような流れになっています。
コネクタ | 内容 | |
---|---|---|
1 | CData(kintone_Select) | 顧客リストからのSelect |
2 | XMLMap | 1.で取得した情報を3.にマッピング |
3 | CData(kintone_Download) | ファイルダウンロード |
kintone でのファイルダウンロードの流れ
kintone のレコードからファイルをダウンロードする時は「レコード情報からダウンロードするファイルのfileKey を取得」して、その「fileKey をもとにkintone からファイルをダウンロード」する流れになります。
kintone からのファイルダウンロードの流れについては以下のドキュメントも参考にしてください。
ファイルダウンロードで必須となる2つの手順 – cybozu developer network
このシナリオでも「顧客リストレコードの会社ロゴフィールドから最初にfileKey を取得」して、次に「そのfileKey をパラメータに実際のファイルデータをダウンロード」しています。
なお、CData kintone Driver では添付ファイルフィールドは以下のようなjson 文字列として取得できます(Aggregate 項目)。今回のシナリオで欲しいのは filekey とname です。今回、会社ロゴフィールド(json 文字列)からfileKey とname を取得する時にはCData kintone Driver で提供されているSQL 関数を利用して取得しています。
[ { "fileKey": "2021122107143862A2F961669C46DDBA4C8F9A53CDA3DF071", "name": "icon-access.png", "contentType": "image/png", "size": "1280" } ]
連携フローの作成
それでは、実際に ArcESB を使って連携フローを作成していきます。
CData コネクタ(kintone_Select)の配置と構成
最初にフローの起点となるCData コネクタ(kintone_Select)を配置し「kintone の顧客リストアプリから、レコード番号と、会社ロゴファイルのfileKey とname を取得」します。コアの「CData コネクタ」を選択し、フローキャンバスへ配置します。
コネクタの設定で、kintone への接続を設定してください。
Action は「Select」。対象テーブルに「顧客リスト」を選択します。
ここでは「レコード番号」と「会社ロゴフィールドのfileKey」と「会社ロゴフィールドのname」を取得します。前述のようにCData kintone Driver では「会社ロゴ(会社ロゴ Aggregate)」フィールドは以下のようなjson 文字列データとして取得できます。
[ { "fileKey": "2021122107143862A2F961669C46DDBA4C8F9A53CDA3DF071", "name": "icon-access.png", "contentType": "image/png", "size": "1280" } ]
そのため、fileKey とname の値を取得(キャプチャ)するためにSQL 関数(JSON_EXTRACT)を利用するカスタムクエリを設定します。ここでは「会社ロゴが登録されているレコードから、レコード番号(RecordId)と、会社ロゴのfileKey、name を顧客リストから取得」します。
SELECT RecordId, JSON_EXTRACT(`会社ロゴ Aggregate`, '$[0].fileKey') as fileKey, JSON_EXTRACT(`会社ロゴ Aggregate`, '$[0].name') as name FROM 顧客リスト WHERE `会社ロゴ Aggregate` != ''
SQL 関数(JSON_EXTRACT)についてはこちらをご覧ください。
設定できたら、アウトプットタブから「受信」を実行して、期待通りにfileKey とname が取得できていることを確認します。
CData コネクタ(kintone_Download)の配置と構成
次に、フローの終点となるCData コネクタ(kintone_Download)で「kintone からfileKey に合致するファイルをダウンロード」する設定をします。
CData kintone Driver では、ファイルダウンロードはストアドプロシージャとして提供されています。
先ほどと同じく、コアの「CData コネクタ」を選択し、フローキャンバスへ配置して、kintone への接続を設定してください。
Action に「Execute Stored Procedure」を選択して、実行するStored Procedure には「DownloadFile」を選択します。
XMLMap の配置と構成
最後に、顧客リストの情報(レコード番号、会社ロゴのfileKey とname)を、ファイルダウンロードのストアドプロシージャのパラメータとしてマッピングします。
コアの「XMLMap」コネクタを配置します。
フローキャンバスの中で、CData コネクタ(kintone_Select)からXMLMap に。XMLMap からCData コネクタ(kintone_Download)へフローを繋ぎます。これで双方のデータ構成(スキーマ)がXMLMap で認識できるようになりますが、CData コネクタ(kintone_Select)ではカスタムクエリを設定していますので、カスタムクエリで抽出されるデータ構造(スキーマ)として先ほど取得結果を確認したファイルをアップロードして設定します。
XMLMap の設定で以下の項目をマッピングします。fileKey をFileKey に。name をFileName にマッピングし、「ファイルの保存先」を示す「ローカルパス(LocalPath)」には「指定先のフォルダ(今回は C:\Temp\kintone\out)\レコード番号」となるようにLocalPath 項目の式エディタで設定します。
これで「顧客リストの各レコードに含まれている「会社ロゴ」フィールドにあるファイル(画像)を、ローカルドライブへまとめてダウンロードする」フローができあがりました。
連携フローの実行と確認
起点となるCData コネクタ(kintone_Select)からフローを実行してみます。顧客リストを取得するCData コネクタのアウトプットタブから「受信」を実行します。
フローの終点となるCData コネクタのアウトプットタブでストアドプロシージャが実行されているかを確認します。ストアドプロシージャ実行結果をチェックする場合は、ここで生成されるファイルのsuccess項目の値をチェックすることで判断できます。
ファイルの保存先として指定したローカルパスに、ダウンロードされていれば成功です。
おわりに
このように、ArcESB とCData kintone Driver で、kintone アプリの各レコードに含まれている添付ファイルフィールドから、ローカルフォルダへ一括でダウンロードするフローをノーコードで構築することができました。
ArcESB はシンプルで拡張性の高いコアフレームワークに、豊富なMFT・EDI・エンタープライズコネクタを備えたパワフルな製品です。CData Drivers との組み合わせで250を超えるアプリケーションへの連携を実現できます。必要な連携を低価格からはじめられる事も大きな特長です。
皆さんのつなぎたいシナリオでぜひ ArcESB を試してみてください。
この記事では ArcESB™ 2021 - 21.0.8017
を利用しています。