Excelを使用してSalesforceとkintone間で顧客データを同期する方法

最近では様々なクラウドサービスが提供されています。目的や用途に応じてそれらサービスを使い分けることになりますが、様々なサービスを「つなげる」ための標準的な方法は、今のところはまだ無いといって良いでしょう。
しかし導入したクラウドサービス間で同じデータを共有したい、あるいは連携させたいという要件はよくあることです。これに対して、**CDataドライバー**を利用するという解決策があります。CDataドライバーを利用すれば、きめ細かなデータ連携を簡単に行うことができます。

今回は、Excelを使用してSalesforceの顧客データをkintoneに同期する方法をご紹介します。クラウドサービスが浸透してきているとはいうものの、一方で、まだExcelなどを使用している業務が少なくないという側面もあるかと思います。扱い慣れたExcelを通してクラウドサービス間でのデータ連携を行えるということは、クラウドサービス導入後の業務効率の向上が期待できます。

![000_構成図.png](https://qiita-image-store.s3.amazonaws.com/0/141193/bcb829c7-5f45-7463-0c26-7efb911a668e.png)

# CData製品のインストール
CData Software をインストールします。今回必要になるのは、次の2つです。

* [Excel Add-In for Salesforce](http://www.cdata.com/jp/drivers/salesforce/excel/ "Excel Add-In for Salesforce")
* [Excel Add-In for kintone](https://www.cdata.com/jp/drivers/kintone/excel/ "Excel Add-In for kintone")

正常にインストールされると、Excel に「CData」タブが表示されるようになります。

![001_Excelタブ.png](https://qiita-image-store.s3.amazonaws.com/0/141193/064407a4-20e9-761b-0b89-65f4034916a5.png)

# 接続設定

Salesforce および kintone への接続情報を設定します。

## Salesforceの接続設定

Excel を起動し、「CData」タブの「取得元Salesforce」をクリックすると、接続ウィザードが表示されるので、必要な情報を設定します。
ここでは、パスワード、セキュリティトークン、ユーザ名を設定します。

![002_SF接続設定.png](https://qiita-image-store.s3.amazonaws.com/0/141193/95b7c5e9-60d4-3481-6712-d9b08576c2f0.png)

## kintoneの接続設定

kintone側も、Salesforceの接続の設定と同様に「取得元Kintone」をクリックして、接続ウィザードを表示し、必要な情報を設定します。
ここでは、パスワード、URL、ユーザ名を設定します。

![003_kintone接続設定.png](https://qiita-image-store.s3.amazonaws.com/0/141193/4a25f6d7-f95b-74bb-fe06-a50d2ea4a940.png)

Salesforce および kintone のデータを操作するための準備はこれだけです。

# 顧客データの同期

Salesforce側は取引先責任者(Contact)を、kintone側は標準で提供されている顧客リストアプリを、顧客データとして使用することにします。

## Salesforceの取引先責任者の取得

「CData」タブの「取得元Salesforce」をクリックします。すでに接続情報が作成されているため、今度はデータを取得するためのデータ選択ウィザードが表示されます。
単にデータを確認したい場合は、このままOKボタンをクリックすれば簡単にデータを表示させることができます。
今回は、SQL文を使用して必要な項目のみを取得します。
以下のようなSQL文を使用します。

```sql
SELECT
  c.Email
 ,acc.Name AccountName
 ,acc.BillingPostalCode AccountBillingPostalCode
 ,CONCAT(acc.BillingState, acc.BillingCity, acc.BillingStreet) AccountAddress
 ,c.Name
 ,c.Department
 ,c.Phone
 ,c.Fax
FROM Contact c, Contact.Account acc
WHERE acc.Name IS NOT NULL
LIMIT 10
```

このSQL文を指定してOKボタンをクリックします。

![004_SF取引先責任者取得.png](https://qiita-image-store.s3.amazonaws.com/0/141193/64c90763-69e9-177d-2cd1-ee7d4ac70940.png)

すると、「取引先責任者」シートが作成され、Salesforce に登録されている取引先責任者の情報が書き込まれている状態になります。

![005_SF取引先責任者シート.png](https://qiita-image-store.s3.amazonaws.com/0/141193/2e2e986c-2d49-d6c8-7558-621a37ebb70e.png)

## kintoneへの顧客リストデータの登録

Salesforce から取得した取引先責任者のデータを kintone に登録するためには、まず始めに kintone の顧客リストデータのシートを作成する必要があります。
取引先責任者を取得したときと同様に、「CData」タブの「取得元Kintone」をクリックしてデータ選択ウィザードを表示し、以下のSQL文を指定してシートを作成します。

```sql
SELECT
  RecordId
 ,メールアドレス
 ,会社名
 ,[郵便番号(数字のみ)]
 ,住所
 ,担当者名
 ,部署名
 ,[TEL(数字のみ)]
 ,[FAX(数字のみ)]
FROM 顧客リスト LIMIT 1
```

![006_KT顧客リスト取得.png](https://qiita-image-store.s3.amazonaws.com/0/141193/881abdfe-41e1-92e9-9975-d684c0ee2ac6.png)

すると、新しくシートが作成されてそこに kintone の顧客リストデータが1件だけ表示されている状態になります。このシートを利用して、kintone に新しい顧客リストデータを登録します。

データを追加するためには、シートの右側まで移動して、枠の右下を下にドラッグします。

![007_KT顧客リストシートドラッグ.png](https://qiita-image-store.s3.amazonaws.com/0/141193/8260abff-06dc-aede-a1cc-6d1967491338.png)

今回は3件登録してみたいと思いますので、3行分ドラッグします。
すると、水色の枠で囲まれたエリアが4行になります。

![008_KT顧客リストシートドラッグ後.png](https://qiita-image-store.s3.amazonaws.com/0/141193/c22c738f-6786-9aca-0b2e-1c111dbc2773.png)

そして対応する項目を「取引先責任者」シートからコピーします。
なおこのとき、セルを コピー→貼り付け する際は、「値で貼り付け」るようにします。
変更された部分は赤字になって表示されます。

![009_KT顧客リストシートコピー後.png](https://qiita-image-store.s3.amazonaws.com/0/141193/20f356bc-e33c-5751-188e-6ac592ae27f1.png)

顧客リストの郵便番号の形式は、デフォルトではハイフンなしの7桁のため、ここは手動でデータを修正します。

![010_KT顧客リストシートデータ修正.png](https://qiita-image-store.s3.amazonaws.com/0/141193/7401105c-2ac7-3881-1e6d-bc25352ea5cf.png)

このようなデータ加工が容易なのもExcelの利点の1つです。

あとは追加した行を選択し、「CData」タブの「行の挿入」を行います。確認ダイアログが表示されるのでOKボタンをクリックします。
登録が成功すると、下図のように RecordId が振られ、先程赤字だった部分が黒字になります。

![011_KT顧客リストシート挿入後.png](https://qiita-image-store.s3.amazonaws.com/0/141193/9a685cc5-d0e8-f8b0-2c90-dbc37738b6df.png)

これで Salesforce の取引先責任者データを kintone の顧客リストデータとして登録することができました。
正常に登録されているか kintone 側で確認してみます。

![012_KT顧客リストWeb上.png](https://qiita-image-store.s3.amazonaws.com/0/141193/de518579-a6b8-22df-72f3-9bc364edb15b.png)

kintone 上で、Excelから登録したデータを確認することができます。