はじめに
本資料は CData Software 社の JDBC Driver 及び、Talend 社の Talend Open Studio を利用してコーディングを行うことなく、Microsoft Access から Salesforce Sales Cloud (以下、Salesforce) 上のデータを更新する手法を説明しています。
データ更新を行うシナリオとして、上図のように Talend + JDBC Driver にて Access のマスタデータを取得し、Salesforce の User オブジェクトの住所、氏名、携帯番号を更新する例を説明します。
検証環境
以下の環境にて検証を行っています。
- Windows 10 Home バージョン 1803
- Microsoft Access for Office 365 (64bit)
- Java SE Runtime Environment 8 (1.8.0_181)
- Talend Open Studio for Data Integration 6.5.1
- CData JDBC Driver
- CData JDBC Driver for Salesforce 2018J
- CData JDBC Driver for Access 2018J
Microsoft Access (以下、Access) 及び、Java SE Runtime Environment 8 についてはインストール済みという前提で今後の説明を進めさせていただきます。
また、Access に関しては下記から Office 365 を取得し、1か月間に限り無料試用することも可能です。
CData JDBC Driver for Salesforce インストール
- 以下のサイトから Salesforce 用の CData JDBC Driver をダウンロードします。
CData JDBC Driver for Access インストール
- 以下のサイトから Access 用の CData JDBC Driver をダウンロードします。
Talend Open Studio インストール
Talend Open Studio の最新バージョンは 7.1.1 ですが、この版ではDB接続のタイプとして "General JDBC" が存在しないため、以下のサイトから Talend Open Studio for Data Integration 6.5.1 をダウンロードし、任意の場所に展開してください。
Salesforce Sales Cloud 開発者アカウントの取得
Salesforce Sales Cloud 開発者アカウント、および、セキュリティトークン取得方法
を参考に 、Salesforce 開発者アカウント、および、セキュリティトークン取得方法を取得してください。
Salesforce には無償で利用できるライセンスとして「30日間の無償評価版」と、「開発者ライセンス」の2種類がありますが、「30日間の無償評価版」は、APIの利用制限があるため、「開発者ライセンス」を取得します。
Access から Salesforce のデータ更新 事前準備
1. Talend Open Studio を起動します。先ほど展開したフォルダ配下の TOS_DI-20180116_1512-V6.5.1\TOS_DI-win-x86_64.exe を起動します。
2. 下記の画面が表示されますので、"x" を押してください。
3. 下記の画面が表示されますので、"リポジトリ" の "ジョブ" を右クリックし、"ジョブの作成" を選択してください。
4. 下記の画面が表示されますので、"名" を入力(ここでは "TrialSalesforce1" とします)し、"Finish" ボタンを押してください。
6. 次に Salesforce 用の JDBC接続を作成します。"リポジトリ" の "DB接続" を右クリックし、"DB接続の作成" を選択してください。
7. 下記の画面が表示されますので、"名" を入力(ここでは "JDBC_Salesforce" とします)し、"Next" ボタンを押してください。
8. 下記の画面が表示されますので、"DBタイプ" として "General JDBC" を選択してください。
9. 下記の画面が表示されますので、それぞれ次のように設定してください。
- JDBC URL
- [Salesforce Sales Cloud 開発者アカウントの取得](#salesforce-sales-cloud-開発者アカウントの取得) にて作成した"ユーザ"、"パスワード"、"APIトークン"を用いて下記の文字列を作成し、設定してください。
```jdbc:salesforce:User=ユーザ;Password=パスワード;SecurityToken=トークン;```
- ドライバJar
- "外部モジュール" を選択し、"追加" ボタンを押し、先の [CData JDBC Driver for Salesforce インストール](#cdata-jdbc-driver-for-salesforce-インストール) でインストールしたパスから lib\cdata.jdbc.salesforce.jar を選択した後、"OK" ボタンを押してください。
- クラス名
- "cdata.jdbc.salesforce.SalesforceDriver" を選択してください。
- ユーザー名
- [Salesforce Sales Cloud 開発者アカウントの取得](#salesforce-sales-cloud-開発者アカウントの取得) にて設定したユーザを入力してください。
- パスワード
- [Salesforce Sales Cloud 開発者アカウントの取得](#salesforce-sales-cloud-開発者アカウントの取得) にて設定したパスワードを入力してください。
11. "リポジトリ" の "メタデータ"、"DB接続" の下に "JDBC_Salesforce" が作成されますので、右クリックし、"スキーマ情報の取得" を選択してください。
12. 下記の画面が表示されますので、"Next" ボタンを押してください。
13. "名" を展開し、"User" テーブルをチェックし、"Next" ボタンを押してください。
14. 下記の画面が表示されますので、"Finish" ボタンを押してください。
15. "リポジトリ" の "メタデータ"、"DB接続"、"JDBC_Salesforce"、"テーブル" の下に "User" オブジェクトが作成されていることを確認できます。
16. 15. の "User" オブジェクトを右クリックし、"クエリの編集" を選択してください。
17. 下記の画面が表示されますので、青枠の "SQLの実行" を押してください。
18. "クエリの結果" にアカウントの一覧が表示されますので、Salesforce Sales Cloud 開発者アカウントの取得 にて作成したアカウントの "Id" フィールドの値を記録してください。
19. 次に Access を起動し、下記の形で "User" テーブルを作成してください。
- Id
- 主キー
- データ型: 短いテキスト
- フィールドサイズ: 18
- 値要求: はい
- インデックス: はい(重複なし)
- MobilePhone, State, City, LastName, FirstName
- データ型: 短いテキスト
- フィールドサイズ: 255
- 値要求: いいえ
- インデックス: いいえ
- Id
- 18. で記録した "Id" フィールドの値
- MobilePhone
- 任意の値 (ここでは "080-0000-0001" とします)
- State
- 任意の値 (ここでは "宮城県" とします)
- City
- 任意の値 (ここでは "仙台市青葉区" とします)
- LastName
- 任意の値 (ここでは "苗字" とします)
- FirstName
- 任意の値 (ここでは "名前" とします)
20. Talend に戻り、Access 用の JDBC接続を作成します。"リポジトリ" の "DB接続" を右クリックし、"DB接続の作成" を選択してください。
21. 下記の画面が表示されますので、"名" を入力(ここでは "JDBC_Access" とします)し、"Next" ボタンを押してください。
22. "DBタイプ" として "General JDBC" を選択し、それぞれ次のように設定してください。
- JDBC URL
- Access のデータファイルのパスを "DataSource" として下記の文字列を作成し、設定してください。下記の "DataSource" の値は例ですので、各自の環境に合わせて変更してください。また、パスの区切りは "\" ではなく、"\\" としてください。
- ```jdbc:access:DataSource=C:\\works\\Database1.accdb;```
- ドライバJar
- "外部モジュール" を選択し、"追加" ボタンを押し、先の [CData JDBC Driver for Access インストール](#cdata-jdbc-driver-for-access-インストール) でインストールしたパスから lib\cdata.jdbc.access.jar を選択した後、"OK" ボタンを押してください。
- クラス名
- "cdata.jdbc.access.AccessDriver" を選択してください。
24. "リポジトリ" の "メタデータ"、"DB接続" の下に "JDBC_Access" が作成されますので、右クリックし、"スキーマ情報の取得" を選択してください。
25. 下記の画面が表示されますので、"Next" ボタンを押してください。
26. "名" を展開し、"User" テーブルをチェックし、"Next" ボタンを押してください。
27. 下記の画面が表示されますので、"Finish" ボタンを押してください。
28. "リポジトリ" の "メタデータ"、"DB接続"、"JDBC_Access"、"テーブル" の下に "User" オブジェクトが作成されていることを確認できます。
事前準備はここまでとなります。
Access から Salesforce のデータ更新 ジョブの作成
ここでは Access から Salesforce のデータ更新を行う事例として、Salesforce の User オブジェクトの住所、氏名、携帯番号を変更するジョブを作成します。
1. Talend の "メタデータ"、"DB接続"、"JDBC_Access"、"テーブル"配下の "User" オブジェクトをジョブ "TrailSalesforce1" へドラッグ & ドロップすると、コンポーネント選択ダイアログが表示されますので、"tJDBCInput" を選択し、"OK"ボタンを押してください。
2. 次に、"メタデータ"、"DB接続"、"JDBC_Salesforce"、"テーブル"配下の "User" オブジェクトをジョブ "TrailSalesforce1" へドラッグ & ドロップし、コンポーネント選択ダイアログから "tJDBCOutput" を選択し、"OK"ボタンを押してください。
3. "Palette" から "tMap" オブジェクトをジョブ "TrailSalesforce1" へドラッグ & ドロップしてください。
4. "JDBC_Access" の "User" オブジェクトをクリックすると、下記のように変化するので、青枠の部分をクリックし、先ほど追加した "tMap" オブジェクトまでドラッグ & ドロップしてください。
5. 同様に "tMap" オブジェクトをクリックし、青枠の部分を "JDBC_Salesforce" の "User" オブジェクトまでドラッグ & ドロップしてください。出力名の入力を求められますので、"toSalesforce" と入力し、"OK" ボタンを押してください。その後、"ターゲットコンポーネントのスキーマを取得しますか ?" と問われますので、"Yes"ボタンを押してください。
6. "JDBC_Salesforce" の "User" オブジェクトをクリックし、"コンポーネント" タブの "データ操作" を "更新" に変更してください。
7. "tMap" オブジェクトをダブルクリックすると、下記の画面が表示されます。右側の "toSalesforce" のフィールドを "Id", "MobilePhone", "State", "City", "LastName", "FirstName" だけ残して削除してください。削除は右下のスキーマエディタにてフィールドを選択した後、赤×ボタンにて行います。
8. 次に、右上の "自動マップ" を押し、"JDBC_Access" の "User" オブジェクトと "JDBC_Salesforce" の "User" オブジェクトの各フィールドの紐付けを行います。 紐付け後、"OK" ボタンを押すと、"変更を反映しますか ?" と問われますので、"Yes"ボタンを押してください。
10. エラーがなく実行が完了した際、Salesforce Sales Cloud 開発者アカウントの取得 にて作成したアカウントにて、Salesforce にログインし、右上のアイコンをクリックし、"設定" を開きます。
11. "個人情報" の "姓"、"名"、"携帯"、"都道府県"、"市区群" の値が Access から Salesforce のデータ更新 事前準備 の 19. にて設定した値にて更新されていることを確認します。