CData Software Blog

クラウド連携のCData Software の技術ブログです。

ArcESB を使ってノーコードでkintone の添付ファイルを一括ダウンロードする方法

f:id:irokawah:20211227002311p:plain

こんにちは。CData Software Japanの色川です。

kintone で複数レコードの添付ファイルをまとめて処理(取得したり、更新したり)したいケースがありますよね。

この記事では、ArcESB を使ってノーコードでkintone の添付ファイルを一括ダウンロードする方法をご紹介します。

反対に「kintone の添付ファイルを一括アップロードする方法」についてはこちらをご覧ください。

www.cdatablog.jp

ArcESB とは?

ファイル転送(MFT)とSaaSデータ連携をノーコードで実現できるデータ連携ツールです。ファイル・データベース・SaaS API、オンプレミスやクラウドにある様々なデータをノーコードでつなぐ事ができます。

www.arcesb.com

この記事のシナリオ

この記事では「kintone アプリの各レコードに含まれている添付ファイルフィールドから、ローカルフォルダへ一括でダウンロードする」シナリオを実現します。

具体的には「kintone 標準アプリ「顧客リスト」の各レコードに含まれている「会社ロゴ」フィールドにあるファイル(画像)を、ローカルフォルダ(C:\Temp\kintone\out)へレコード番号別にフォルダを分けた形でダウンロードして取得」します。

<ダウンロード先のローカルフォルダ>
 ├─ <レコード番号> フォルダ
 │    └ <kintone に登録されているファイル名>
 ├─ <レコード番号> フォルダ
 │   ...

なお、この記事では説明をシンプルにするために、各レコードの「会社ロゴ」フィールドには添付ファイルが1つずつ登録されていることを前提にしたフローになっています。

必要なもの

この記事のシナリオでは以下の製品を利用します。すべて30日間のトライアルが提供されています。ぜひお手元で試してみてください。

製品のインストール等はこちらの記事を参考にしてください。

www.cdatablog.jp

kintone の事前準備

今回kintone 側は、サンプルデータ付きの顧客リストアプリをそのまま利用しています。レコード番号1、2、3の会社ロゴフィールドに画像を登録してあります。

f:id:irokawah:20211224125142p:plain

ArcESB の基本的な使い方

ArcESB の起動方法や基本的なフローの作り方についてはこちらをご覧ください。

www.arcesb.com

www.arcesb.com

はじめに(連携フローの概要)

このシナリオで作成する連携フローは以下のような流れになっています。

  コネクタ 内容
1 CData(kintone_Select) 顧客リストからのSelect
2 XMLMap 1.で取得した情報を3.にマッピング
3 CData(kintone_Download) ファイルダウンロード

f:id:irokawah:20211224125157p:plain

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 コネクタ」を選択し、フローキャンバスへ配置します。

f:id:irokawah:20211224125208p:plain

コネクタの設定で、kintone への接続を設定してください。

f:id:irokawah:20211224125220p:plain

Action は「Select」。対象テーブルに「顧客リスト」を選択します。

f:id:irokawah:20211224125238p:plain

ここでは「レコード番号」と「会社ロゴフィールドの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` != ''

f:id:irokawah:20211224125249p:plain

SQL 関数(JSON_EXTRACT)についてはこちらをご覧ください。

cdn.cdata.com

設定できたら、アウトプットタブから「受信」を実行して、期待通りにfileKey とname が取得できていることを確認します。

f:id:irokawah:20211224125307p:plain

f:id:irokawah:20211226200208p:plain

CData コネクタ(kintone_Download)の配置と構成

次に、フローの終点となるCData コネクタ(kintone_Download)で「kintone からfileKey に合致するファイルをダウンロード」する設定をします。

CData kintone Driver では、ファイルダウンロードはストアドプロシージャとして提供されています。

cdn.cdata.com

先ほどと同じく、コアの「CData コネクタ」を選択し、フローキャンバスへ配置して、kintone への接続を設定してください。

f:id:irokawah:20211224125335p:plain

Action に「Execute Stored Procedure」を選択して、実行するStored Procedure には「DownloadFile」を選択します。

f:id:irokawah:20211224125345p:plain

XMLMap の配置と構成

最後に、顧客リストの情報(レコード番号、会社ロゴのfileKey とname)を、ファイルダウンロードのストアドプロシージャのパラメータとしてマッピングします。

コアの「XMLMap」コネクタを配置します。

f:id:irokawah:20211224125355p:plain

フローキャンバスの中で、CData コネクタ(kintone_Select)からXMLMap に。XMLMap からCData コネクタ(kintone_Download)へフローを繋ぎます。これで双方のデータ構成(スキーマ)がXMLMap で認識できるようになりますが、CData コネクタ(kintone_Select)ではカスタムクエリを設定していますので、カスタムクエリで抽出されるデータ構造(スキーマ)として先ほど取得結果を確認したファイルをアップロードして設定します。

f:id:irokawah:20211224125408p:plain

f:id:irokawah:20211224125419p:plain

f:id:irokawah:20211224125428p:plain

XMLMap の設定で以下の項目をマッピングします。fileKey をFileKey に。name をFileName にマッピングし、「ファイルの保存先」を示す「ローカルパス(LocalPath)」には「指定先のフォルダ(今回は C:\Temp\kintone\out)\レコード番号」となるようにLocalPath 項目の式エディタで設定します。

f:id:irokawah:20211224125443p:plain

f:id:irokawah:20211224125457p:plain

これで「顧客リストの各レコードに含まれている「会社ロゴ」フィールドにあるファイル(画像)を、ローカルドライブへまとめてダウンロードする」フローができあがりました。

連携フローの実行と確認

起点となるCData コネクタ(kintone_Select)からフローを実行してみます。顧客リストを取得するCData コネクタのアウトプットタブから「受信」を実行します。

f:id:irokawah:20211224125557p:plain

フローの終点となるCData コネクタのアウトプットタブでストアドプロシージャが実行されているかを確認します。ストアドプロシージャ実行結果をチェックする場合は、ここで生成されるファイルのsuccess項目の値をチェックすることで判断できます。

f:id:irokawah:20211224125609p:plain

ファイルの保存先として指定したローカルパスに、ダウンロードされていれば成功です。

f:id:irokawah:20211224125624p:plain

f:id:irokawah:20211224125633p:plain

おわりに

このように、ArcESB とCData kintone Driver で、kintone アプリの各レコードに含まれている添付ファイルフィールドから、ローカルフォルダへ一括でダウンロードするフローをノーコードで構築することができました。

ArcESB はシンプルで拡張性の高いコアフレームワークに、豊富なMFT・EDI・エンタープライズコネクタを備えたパワフルな製品です。CData Drivers との組み合わせで250を超えるアプリケーションへの連携を実現できます。必要な連携を低価格からはじめられる事も大きな特長です。

皆さんのつなぎたいシナリオでぜひ ArcESB を試してみてください。

www.arcesb.com


この記事では ArcESB™ 2021 - 21.0.8017 を利用しています。