こんにちは。CData Software Japanの色川です。
日頃、データ連携・連携の自動化について多くのご相談を頂きますが、その中でも良く出てくるデータソースの1つがExcel です。皆さん大好きですよね、Excel。良くも悪くも使いだす障壁の低いExcel を入力インタフェースにしてる業務や、Excel を帳票として使っている業務なども多いのではないでしょうか。
「ローカルにあるExcel ファイルのデータを取得して、SaaS やアプリケーションに連携したい」は、とても多く頂く相談です。
以前、
こちらの記事 で、CData Arc からExcel ファイルに書き込む機能を紹介しました。
この記事では、CData Arc のExcel コネクタでExcel ファイルを読み取る方法をご紹介します。
CData Arc
CData Arc は、CData 製品の中で「自動化/Automate」を担うデータ連携ツールです。「B2B 連携をもっとシンプルに」をコンセプトに、ファイル連携 & DB 連携 & API 連携といったB2B 連携に必要なすべてをノーコード・ローコードでつなぐことができるプラットフォームです。
この記事のシナリオ
この記事では、ローカルのExcel ファイルからデータを読み取り、Google Sheets へ連携する方法をご紹介します。
このシナリオは、CData Arc の
サンプルフローページ でもご紹介していますが、Excel からの読み取り部分を少し詳しくご紹介します。
事前準備
この記事のシナリオでは、こちらの製品を利用します。30 日間のトライアルライセンスが提供されていますので、ぜひお手元で試してみてください。
製品のインストールとナレッジ
CData Arc のインストールはこちらを参考にしてください。
CData Arc を使い始めるときは、こちらも参考にしてください。
CData Arc に関するナレッジは、こちらにまとめています。あわせて参考にしてください。
Excel ファイル
この記事では、以下のようなExcel ファイルを用意しました。1つ目はA1セルからはじまるシンプルなテーブルスタイルのデータ構造です。
2つ目はデータの内容としては1つ目と同一なのですが、シンプルなテーブルではない(やや帳票的な)スタイルで用意しました。
Google Sheets
この記事では、Excel から読み取ったデータを、そのままシンプルに同期します。
連携フローの作成
それでは実際に連携フローを作成していきます。
このシナリオで作成する連携フローは以下のような流れになっています。
コネクタ 内容
1
File 指定フォルダからExcel ファイルを取得(受信)
2
Excel Excel ファイルからデータを読み取り
4
CData Google Sheets Driver でGoogle Sheets へUpsert(更新)
File コネクタ
最初にフローの起点となるFile コネクタを配置して、Excel ファイルをArc のフローに取得する設定をします。コアカテゴリから「File(ファイル)」コネクタを選択して、フローキャンバスへ配置します。
Excel ファイルを配置してあるフォルダを「パス」に指定します。この記事では、C:\Temp\excel 配下にExcel ファイルを配置しています。必要に応じて、受信のファイルマスクなどを設定してください。
これで、File コネクタの設定は完了です。
アウトプットタブから「受信」を実行し、Excel ファイルを受信(取得)できることを確認します。
Excel コネクタ
次にこの記事の本題であるExcel コネクタを配置して、取得したExcel ファイルから読み取る設定をします。コアカテゴリから「Excel」コネクタを選択して、フローキャンバスへ配置します。
CData Arc のExcel コネクタによる読み取りには2 つの変換モードがあります。シンプルなテーブルスタイルのExcel ファイルの読み取りに利用できる「テーブルモード」と、複雑なスタイルのExcel ファイルもキメ細かく読み取りロジックを指定することができる「テンプレートモード」です。
Excel 読み取り(テーブルモード)
まずは事前準備したExcel ファイルの内、シンプルなテーブルスタイルのExcel を読み取る時の設定です。
こちらのExcel はカラムヘッダーが存在するシンプルなテーブルスタイルなので「Translation Mode」を「テーブル」にして、「カラムヘッダーが存在します」をON にします。
テーブルモードの場合、必要な設定はこれだけです。とてもシンプルですね。
期待通りに動作するかを確認してみましょう。Excel コネクタのインプットタブから「ファイルをアップロード」したら、アウトプットタブを確認します。期待通りに下記のようなスキーマで読み取れていることが確認できます。
1000
1
foo
10
1000
1000
2
bar
10
2000
1000
3
baz
20
5000
Excel 読み取り(テンプレートモード)
次に事前準備したExcel ファイルの内、シンプルなテーブルではない(やや帳票的な)スタイルで用意したExcel を読み取る時の設定です。
読み取った後のデータ構造(スキーマ)としてはテーブルモードと同じ結果を得たいのですが、こちらのExcel ではOrderNo が帳票のヘッダ的に配置されているイメージです。この場合はテーブルモードでは読み取れないので、テンプレートモードを利用します。
テンプレートモードではExcel コネクタは事前に指定されたテンプレートファイルを使用して変換を実行します。Excel から XML に変換する場合、テンプレートファイルはXML ファイルで用意します。テンプレートファイルは、CData Arc のArcScript を使用して、出力ファイルに入力ファイルのデータを動的に取り込むように記述します。
Excel からXML へ変換するためのテンプレートの記述については、こちらの
ヘルプトピック を参考にしてください。
ここではExcel コネクタに用意されているサンプルテンプレートをベースに、ヘルプトピックのガイドに従って、以下のようなテンプレートファイルを用意しました。
map:OrderNo = "D2"
map:Seq = "A5:A*"
map:Product = "B5:B*"
map:Amount = "C5:C*"
map:Price = "D5:D*"
[data.OrderNo]
[data.Seq#[_index] | def]
[data.Product#[_index] | def]
[data.Amount#[_index] | def]
[data.Price#[_index] | def]
用意したテンプレートファイルをExcel コネクタにアップロードします。
これでテンプレートモードでのExcel 読み取りの設定ができました。
期待通りに動作するかを確認してみましょう。Excel コネクタのインプットタブから「ファイルをアップロード」したら、アウトプットタブを確認します。期待通りに下記のようなスキーマで読み取れていることが確認できます。
1000
1
foo
10
1000
1000
2
bar
10
2000
1000
3
baz
20
5000
File コネクタから、Excel コネクタにフローをつなぎます。これで、指定したフォルダから取得したExcel ファイルはフローで処理するメッセージとして次のコネクタに連携され、Excel コネクタで読み取り(XML へと変換)されます。
CData コネクタ
次にフローの終点となるCData コネクタを配置して、Google Sheets の更新(Upsert)設定をします。コアカテゴリから「CData」コネクタを選択して、フローキャンバスへ配置します。
Google Sheets へ接続します。この記事ではOAuth 認証を経て、接続します。
アクションに「Upsert」を指定して、テーブルの「追加」から更新するGoogle Sheets のシートを指定します。
これで、CData コネクタの設定は完了です。
XMLMap コネクタ
最後にExcel コネクタで読み取った(XML に変換した)データを、CData コネクタで構成したGoogle Sheets のシート構成にマッピングする設定をします。コアカテゴリから「XMLMap」コネクタを選択して、フローキャンバスへ配置します。
Excel コネクタから、XMLMap コネクタへ。XMLMap コネクタからCData コネクタへフローをつなぎます。
フローをつないだことで、スキーマ構造が確定しているCData コネクタについては、XMLMap のデスティネーションファイルにスキーマが自動的に認識されます。ソースとなるExcel コネクタについては設定時点ではスキーマ構造が分かりませんので、読み取った(XML 変換した)データ構造のスキーマファイルを用意して、アップロードすることで指定します。
マッピングは、同名の項目を持つ場合、自動的にマッピングが設定されます。今回は全ての項目を同名にしてありますので、マッピング設定はこれで完了です。
これで、XMLMap コネクタの設定は完了です。
これで「ローカルのExcel ファイルからデータを読み取り、Google Sheets へ連携する」フローが出来上がりました。
連携フローの実行
作成したフローを実行して確認してみましょう。
起点となるFile コネクタからフローを実行してみます。アウトプットタブから「受信」を実行します。
フローの終点となるCData コネクタのインプットタブではGoogle Sheets へのUpsert が成功していることが確認できます。
Google Sheets へ期待した通りに連携できていることが確認できました。
連携フローの自動実行
CData Arc ではフローを定期実行するスケジューラ機能を持っています。今回のシナリオであれば、フローの起点となるFile コネクタの「オートメーション」タブで設定することができます。1時間に1度、毎時0分に定期実行する場合は、このように設定します。
この記事で紹介したフロー(テンプレート)
この記事で作成したフローについては、
こちら からテンプレートとして使える arcflow がダウンロードできます。
ダウンロードしたarcflow は「ワークスペースをインポート」やフローデザイナーにドラッグ&ドロップで登録できます。こちらのテンプレートを利用する時は、各コネクタでの接続情報などを、お使いの環境に併せて編集してください。
おわりに
大変使い勝手が良いExcel は、とても多くの業務で利用されていますよね。それらExcel 形式で存在するデータの活用を自動化・効率化するには、Excel ファイルをシンプルに、時にはキメ細かく読み取れる機能が必要です。
CData Arc はシンプルで拡張性の高いコアフレームワークに、豊富なMFT・EDI・エンタープライズコネクタを備えたパワフルな製品です。CData Drivers との組み合わせで250を超えるアプリケーションへの連携を実現できます。必要な連携を低価格からはじめられる事も大きな特長です。
皆さんのつなぎたいシナリオでぜひ CData Arc を試してみてください。
arc.cdata.com
お試しいただく中で何かご不明な点があれば、テクニカルサポートへお気軽にお問い合わせください。
www.cdata.com
この記事では CData Arc™ 2022 - 22.0.8252.0 を利用しています。
関連コンテンツ