Excel を使い倒せ！ひとつのSheet でSansan とSalesforce のデータを照合する方法

![KV-min.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/31e0b93c-008e-3100-7a3b-93ac94f1e1c0.png)

紙の名刺を受け取ったとき、その名刺の人物が会社の顧客情報に登録されているかどうかを皆さんの会社はどのように確認していますか？

さまざまな確認方法があるかと思いますが、わたしは考えました。どうにかExcel のみでできないものか、と。

結果、Sansan とCData Excel Add-In のCData Excel 関数を活用することで名刺情報と顧客情報（本記事ではSalesforce のLead、およびContact 情報）を簡単に照合することができたので、その手順をシェアしたいと思います！

## 目次
[ステップ１．紙の名刺をSansan アプリでデジタルデータ化する](#ステップ１紙の名刺をsansanアプリでデジタルデータ化する)
[ステップ２．Excel のSheet にSansan の名刺情報（Bizcards）を取得する](#ステップ２excel-のsheet-にsansan-の名刺情報bizcardsを取得する)
[ステップ３．ステップ２で取得した名刺情報のEmail アドレスとSalesforce の顧客情報と照合する](#ステップ３ステップ２で取得した名刺情報のemail-アドレスとsalesforce-の顧客情報と照合する)
[注意点](#注意点)
[まとめとおまけ](#まとめとおまけ)
[おまけのステップ．未登録の名刺情報をSalesforce のLead へ登録する](#おまけのステップ未登録の名刺情報をsalesforce-のlead-へ登録する)

## ステップ１．紙の名刺をSansanアプリでデジタルデータ化する

紙の名刺のままだと当然Excel では扱えなので、デジタルデータ化する必要があります。

今回は、[Sansan](https://jp.sansan.com/) のスマートフォンアプリで名刺をスキャンし、デジタルデータ化しました。

## ステップ２．Excel のSheet にSansan の名刺情報（Bizcards）を取得する

続いて下記の手順でSansan に取り込んだ名刺情報をExcel で取得します。

**１．[Excel Add-In for Sansan](https://www.cdata.com/jp/drivers/sansan/excel/)をダウンロード＆インストールします。**

![1-min.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/048612e2-8c8d-93e9-b8bb-3fcb063798ba.png)

**２．Excel を開きタブ［CData］＞［データの取得］＞［取得元：Sansan］をクリックします。**

![2-min.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/2314430d-3085-104f-5ebf-3ae95eccc4b5.png)

**３．サブウィンドウ［CData 接続エディタ］が開きますので、API Key にSansan から取得したAPI Key を入力します。**
※Sansan からのAPI Key の取得方法は、[Sansan Web サイトの情報](https://docs.ap.sansan.com/ja/api/openapi/index.html)を参照ください。

![3-min.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/9bec5183-29e0-a4a7-d80b-5f15a7a7b3ab.png)

※［Range］を［me］にすると自分の所有する名刺情報を、［all］にすると自分から参照できる範囲のすべての名刺情報を取得することができます。

**４．［接続テスト］をクリックしSansan と接続できることを確認したら、各［OK］をクリックします。**

![4-min.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/387b2607-1598-577c-e960-e6c267b11073.png)

**５．サブウィンドウ［クエリを編集］が開きますので、［選択］をクリック、表示されたテーブルの一覧から［Bizcards］をクリックし、［OK］をクリックします。**

![5-min.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/89360e2b-1771-3b62-b79a-746130e0d2d5.png)

**６．テーブル［Bizcards］のカラムが表示されるので、取引情報との照合に必要なカラムのみにチェックを入れ、最大行数のチェックは外し、［OK］をクリックします。**

![6-min.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/21e0eacd-cc57-5f94-a6b9-a3197e8db495.png)

なお、本手順では（Salesforce （のLead）へ新規登録する際に必須項目である）カラム［LastName］［FirstName］［Email］［CompanyName］の３つのみチェックを入れました。

※今回新たにSansan に取り込んだ名刺情報のみを取得したい場合は、フィルタと値を使用して[RegisteredTime]に取り込んだ日を指定ください。
（例）
![26-min.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/fa352138-b7da-4e9c-ff64-e68a9ea89f76.png)

**７．テーブル［Bizcards］のデータ＝ステップ１でSansan に取り込んだ名刺情報がExcel のSheet に取得されます。**

![7-min.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/e001fa6b-3212-fa4a-4f34-00bae7f6b539.png)

## ステップ３．ステップ２で取得した名刺情報のEmail アドレスとSalesforce の顧客情報と照合する

ここから本番です！

ステップ２の手順７で取得した名刺情報が会社の顧客情報、ここではSalesforce のLead、およびContact に登録されているかどうかを確認していきます。手順は以下のとおりです。

**８．[Excel Add-In for Salesforce](https://www.cdata.com/jp/drivers/salesforce/excel/)をダウンロード＆インストールします。**

![8-min.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/2eb29a92-4a97-2131-22a3-6d3245de1b77.png)

※なお、[CData Excel Add-In](https://www.cdata.com/jp/excel/)はSalesforce の他にもさまざまなSaaS に対応していますので、ぜひチェックしてみてください！

**９．Excel を開きタブ［CData］＞［データの取得］＞［取得元：Salesforce］をクリックします。**

![9-min.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/08700dd0-fa8d-f3b7-32c3-64ff220c0a9d.png)

**１０．サブウィンドウ［CData 接続エディタ］が開きますので、下記のとおり接続に必要な情報を入力します。**

|接続プロパティの項目|入力値|
|---|---|
|Auth Scheme|Basic|
|User|Salesforce にログインする際のユーザー名|
|Password|Salesforce にログインする際のパスワード|
|Security Token|Salesforce から取得したセキュリティートークン|

![10-min.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/383ce4c9-59b1-32ba-fe42-00dbcf0071a6.png)

※Salesforce のセキュリティトークンの取得方法は下記を参照ください。
　[Salesforce でのセキュリティトークン取得方法](https://www.cdata.com/jp/blog/2021-01-25-113037)

※本手順では［Auth Scheme］として［Basic］を使用していますが、[他の認証方式も利用可能](https://cdn.cdata.com/help/RFJ/jp/xls/pg_connectionx.htm)です。

**１１．ここで［接続名］をコピー＆ペーストでメモ帳などに控えておきます。**

![11-min.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/a5c0ae73-8619-7329-5048-57c66386e8fa.png)
　　　
**１２．［接続テスト］をクリックしSalesforce と接続できることを確認したら、各［OK］をクリックします。**

![12-min.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/26846fbe-8552-bd61-ad3d-e6ccd0ed21f1.png)

**１３．（Salesforce のデータをSheet に取得する必要はないので）［キャンセル］をクリックし、サブウィンドウを閉じます。**

![13-min.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/b46fc46c-1a54-0409-0a81-bd3e7937744a.png)

### Salesforce のLead との照合
**１４．ステップ２．の手順７のSheet を開き、適当なセルに下記の関数を入力します。するとSalesforce のLead に登録のあるEmail アドレスの行についてはId が表示されます。あわせて列名をわかりやすい名称に変更します。**
```
=CDATAQUERY("SELECT Id FROM Lead WHERE Email = '"&E2&"'","Salesforce.Connection1", , ,"Scalar=True" )
```
![14-min.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/84290336-1241-9a2d-9140-b59ac4e84be7.png)

※関数「=CDATAQUERY」は、CData Excel Add-In の[CData Excel 関数](https://cdn.cdata.com/help/RFJ/jp/xls/pg_lsfunctions.htm)の一種で、各種SQLクエリをExcel 関数のように呼び出すことができる機能になっています。

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

今回利用した関数「=CDATAQUERY」の使い方は下記のとおりです。

=CDATAQUERY(（１）,（２）,（３）,（４）,（５）)
|番号|概要|
|---|---|
|（１）|SQL 文|
|（２）|ステップ３．の手順１１で控えた［接続名］|
|（３）|クエリのパラメータの名前と値を含むセルの範囲を指定します。範囲の最初の行はヘッダー行で、パラメータ名を指定します。 例えば、範囲A10:B11 にパラメータが含まれる場合、セルA10:B10 にはパラメータ名が含まれ、セルA11:B11 にはパラメータ値が含まれます。|
|（４）|行単位での結果の出力が開始されるセルを指定する文字列です。デフォルトでは、CDATAQUERY は式が入力されたセルの真下に結果を出力します。|
|（５）|式の動作を制御する追加オプションを含む文字列。デフォルトの動作では、最初の行にカラムヘッダーが含まれるテーブルでデータを返します。"Header=False" は、ヘッダーなしでデータを返すように設定できます。"Scalar=True" は、データの単一のセルのみを返し、式と同じセルに返すように設定できます。|

今回は（３）と（４）は使わず、下記のとおり（１）、（２）、（５）を指定しています。

|番号|値|概要|
|---|---|---|
|（１）|"SELECT Id FROM Lead WHERE Email = '"&E2&"'"|Salesforce のテーブル［Lead］のデータのうち、Excel のセルE2 に入力されているEmail アドレスに一致するデータのLeadId を返す、というSQL 文|
|（２）|"Salesforce.Connection1"|ステップ３．の手順１１で控えた［接続名］|
|（３）|"Scalar=True"|（１）のSQL 文の結果を関数「=CDATAQUERY」を入力したセルに表示させるよう指定|

### Salesforce のContact との照合
**１５．１４と同様に、適当なセルに下記の関数を入力します。するとSalesforce のContact に登録のあるEmail アドレスの行についてはId が表示されます。あわせて列名をわかりやすい名称に変更します。**
```
=CDATAQUERY("SELECT Id FROM Contact WHERE Email = '"&E2&"'","Salesforce.Connection1", , ,"Scalar=True" )
```
![15-min.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/9ee6a82c-caf5-e07f-215f-1a6095139811.png)

**１６．１４、１５でId が表示されなかったものが未登録の名刺情報であることがわかりました。**

![16-min.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/6219b67a-d940-29ba-2099-e0e93c1a6252.png)

## 注意点

上記の手順では、ステップ２．の手順７でSansan に取り込んだ名刺情報を取得したSheet に直接関数を入力して、データの照合を行いました。

この場合、［ワークシートのリフレッシュ］をクリックすると、ステップ３．の手順１４、１５で入力した関数が削除されるので注意してください。

![17-min.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/9217df30-26ce-cd54-5ac1-8b6e46fdcd80.png)

関数の削除を避けるためには、ステップ２．の手順７のSheet をコピーして、そのコピーしたSheet にてステップ３．の手順を実施する必要があります。

## まとめとおまけ

このようにCData Excel Add-In のCData Excel 関数を活用すると、通常のExcel 関数を使うのと同じ感覚でSansan とSalesforce という全く異なるSaaS 間のデータ照合を行うことができます（SQL 文を少々書く必要がありますが）。

なお、照合後、同じExcel ファイルを使用してSalesforce へ未登録の名刺情報を登録することも可能です。手順は以下です。

---
### おまけのステップ．未登録の名刺情報をSalesforce のLead へ登録する

**１７．Excel を開きタブ［CData］＞［データの取得］＞［取得元：Salesforce］に表示される、ステップ３．の手順９～１３で作成した接続名をクリックします。**

![18-min.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/86b17bca-eb69-8e62-cc1c-ba3f8364165a.png)

**１８．サブウィンドウ［クエリを編集］が開きますので、［選択］をクリック、表示されたテーブルの一覧から［Lead］を検索しクリック、［OK］をクリックします。**

![19-min.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/0c558717-6cff-6a83-b4c7-70ec8902ef3a.png)

**１９．テーブル［Lead］のカラムが表示されるので、登録が必要なカラムのみにチェックを入れ、最大行数は１にし、［OK］をクリックします。**

![20-min.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/98446814-95f6-3f75-edfa-242fa0e002ad.png)

なお、本手順ではカラム［LastName］［FirstName］［Email］［CompanyName］の３つのみチェックを入れ、またSansan から取得したデータのカラムの並びをそろえるため、SQL クエリ欄にて［Email］と［CompanyName］の順番を入れ替えました。

**２０．テーブル［Lead］のデータがExcel のSheet に取得されます。（最大行数を１にしたので）データは１行だけ表示された状態です。**

![21-min.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/beedd52b-53a2-b006-9f6f-7bf546d38652.png)

**２１．２０で表示されたデータの下の行に未登録の名刺情報をコピー＆ペーストします。**

![22-min.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/48875984-175c-7e88-33af-fc483e3ea188.png)

**２２．２１でコピー＆ペーストした行を範囲選択し、［行の更新］をクリックします。**

![23-min.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/3a531caa-3719-90cb-4281-ae6d917830aa.png)

**２３．「更新してよろしいですか？」というメッセージが表示されるので、［OK］をクリックします。**

![24-min.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/5782265a-7ded-3409-0fd0-229381e78fca.png)

**２４．Salesfroce へデータが登録されます。**

![25-min.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954014/c216250f-5341-643c-08c2-a3d7121b0f63.png)

---

他にもCData Excel Add-In はいろいろとできますので、「こんなことしたいんだけど～」などありましたら[こちら](https://www.cdata.com/jp/contact/)から問合せください！