CData Software Blog

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

CData Excel Add-in でセルの値を元に動的にデータを取得する:CData Excel Formulas

f:id:sugimomoto:20210813102012p:plain

こんにちは。CData Software Japan リードエンジニアの杉本です。

今回は CData Excel Add-in のあまり目立たないながらも強力な機能、CData Excel Formulas を紹介したいと思います。

CData Excel Formulas とは?

CData Driver で実行できる各種SQLクエリをExcel 関数のように呼び出すことができる機能です。

cdn.cdata.com

提供されている関数は全部で4種類。データを取得するクエリから、INSRET/UPDATE/DELETEおよびストアドプロシージャの実行まで、かなり柔軟に処理が行えます。

関数名 概要 備考
CDATAQUERY SELECT/INSERT/UPDATE/DLEETEもしくはストアドプロシージャを実行します。
CDATAINSERT セルの値を元にINSERTを実行します。
CDATAUPDATE セルの値を元にUPDATEを実行します。
CDATADELETE セルの値を元にDELETEを実行します。

この機能のポイントはなんと言っても「Excel 関数であるがゆえに、セルの値が変わった瞬間に処理が実行される」という点でしょう。

これによりクラウドサービスのデータをセルの値を元に、動的に取得したり、更新したりすることができるExcel シートを簡単に作成することができます。

今回はこの4種類の機能の中から、データ取得:CDATAQUERYに絞って、使い方を簡単に解説したいと思います。

利用する CData Excel Add-in

今回はCData Excel Add-in for Salesforce を利用しました。

www.cdata.com

f:id:sugimomoto:20210813101707p:plain

インストール完了後、予め接続情報を設定しておきます。

f:id:sugimomoto:20210813101721p:plain

CDATAQUERY の使い方

今回は以下のようなSalesforceのAccount情報を検索して一覧取得する機能を作りたいと思います。

https://cdatajbuilds.s3.ap-northeast-1.amazonaws.com/CDataBlog/salesforceselect.gif

「A2」セルは検索ボックス扱いのセルにします。この値を元にAccountのNameを部分一致検索します。

f:id:sugimomoto:20210813101732p:plain

A6セルにはCDATAQUERY 関数を指定します。

今回指定した関数は以下のようなものです。

=CDATAQUERY("SELECT Id, Name FROM Account WHERE Name like '%" & A2 & "%'","Salesforce.Connection1")

Salesforceの値を取得するSELECT文を1つ目のパラメータ、接続情報を2つ目のパラメータに指定しました。

SELECT文では、条件式として「WHERE Name Like '%HOGEHOGE%'」というようなNameの部分一致検索をかけます。

そして、このHOGEHOGE部分に対して「A2」のセルの値を指定するように記述しています。

このように指定することで、以下のようにA7:B7以降のセルに結果が表示されるという仕組みです。

f:id:sugimomoto:20210813101738p:plain

ちなみに第3引数のParameters を利用することで、以下のような指定も可能です。

セルのヘッダーに当たる部分がパラメータ名となり、条件式を指定できます。

=CDATAQUERY("SELECT Id, Name FROM Account WHERE Name = @Name","Salesforce.Connection1",A1:A2)

第4引数のResultLocationでは結果を表示する先頭セルを指定できます。ちなみにここは文字列指定になるので、ダブルコーテーションをつけるのを忘れないようにしましょう。

例えば表示結果を「A8」のセルにすると

=CDATAQUERY("SELECT Id, Name FROM Account WHERE Name = @Name","Salesforce.Connection1",A1:A2,"A8")

以下のような結果になります。想定したデザインよりも1行ずれているのがわかりますね。

f:id:sugimomoto:20210813101743p:plain

おわりに

このように、CData Excel Formulas を使うことで、かなり柔軟かつ動的なデータ取得が行なえます。

帳票系をExcel で作っていたりすると、こういった機能は便利そうですね。

今回はSalesfroceで紹介しましたが、KintoneやBacklogなど他のExcel Add-inでも同様に利用できます。

もし使い方・利用方法でわからない点があれば、テクニカルサポートまで問い合わせしてみてください。

https://www.cdata.com/jp/support/submit.aspx