Data connector for Salesforceを試してみた（GoogleSpreadSheetとSalesforceを連携）

皆さんはSalesforceを導入する際に、お客様から「Excelみたいな入力がしたい」
と要望を受けたことはありませんか？

[Data connector for Salesforce（ベータ）](https://chrome.google.com/webstore/detail/data-connector-for-salesf/jijmhhpjhgeafilgjkdeocjepoacekof)を利用すると、その要望を実現することができてしまうかも？！
しれません。
このアドオンを利用すると、任意のデータ出力やレポートをベースにデータの読み込み、データを登録・更新・削除ができます。
##インストール手順
[Data connector for Salesforce（ベータ）](https://chrome.google.com/webstore/detail/data-connector-for-salesf/jijmhhpjhgeafilgjkdeocjepoacekof)にアクセスし、「無料」ボタンをクリック。
アドオンはGoogleアカウントごとにインストールする必要があります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/309797/f9b1b28b-5f70-370b-cd45-ad6453cd0f9b.png)

#アドオンの有効化＆認証
新規スプレッドシートを開き、
アドオン → Data Connector for Salesforce → Click to enable the addon　をクリック
![image.png](https://qiita-image-store.s3.amazonaws.com/0/309797/4dee24a4-c3f0-2afd-3ce2-52d1db679def.png)

アドオン → Data Connector for Salesforce → Open　をクリックし、接続したい組織のID／PWを入力します。
（アプリケーション接続の許可を求められますので許可してください）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/309797/db88c555-fde0-ab64-95a8-7c23cee26bf9.png)

準備完了！
![image.png](https://qiita-image-store.s3.amazonaws.com/0/309797/71ff5a0b-b44b-d7a7-e4a8-be18026767fe.png)

##データの取得
データ取得には3つの方法が用意されています。
1. レポート
2. オブジェクト、項目を指定
3. SOQL

1.のレポートはSalesforce上に作成したレポートを指定し、データを表示できます。
・サマリ、マトリックスレポートは利用できません（取得できますが崩れます）
・更新に利用する際は、キー情報（Id、外部Id）もレポートに追加しておきましょう。
・レポートの検索もできるのですが、なぜか出てこない、、

2.はオブジェクト、項目の指定をし、データを取得します。
DataLoaderと同じような流れで選択でき、なんとオブジェクト名、項目名はフィルターを利用し選択できます（ラベル・API参照名両方に対応！）
個人的にはオブジェクト名選択時にフィルターがあるだけでも価値ありと思ってしまいます（笑

3.のSOQLはクエリを書いてデータを取得できます。
開発者コンソールのQueryEditorのようなイメージですね。開発者コンソールは結果をコピペできないので、
コピペ目的で利用するのもありかもしれません。

今回は2.の方法でデータを取得します。
Import → オブジェクト選択 → 項目選択 → 検索条件（上限件数） といった流れで設定をします。
ここでは、商談オブジェクト、すべての項目、作成日が2018年1月1日以降の商談を100件上限で取得します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/309797/47ea237f-2d7b-c150-1cf1-1a48d5a50bfe.png)

GET DATAをクリックすると、一覧が表示されます
（Activeシートに上書きするか、新規シートにするかは選択できます）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/309797/378ca924-b317-8e51-5152-62ceba69faf2.png)

##データの登録・更新
登録・更新したい行を選択し、REFRESH SELECTED RANGE をクリックします。
そうすると、更新対象行に背景色が付きます。
※ちなみに複数選択（A行とC行といった選択）はできません
![image.png](https://qiita-image-store.s3.amazonaws.com/0/309797/73c7963c-2414-c256-aa9f-9cfd128f5f01.png)

次に、更新したいオブジェクト（今回は商談）を選択し、操作（Insert／Update／Insert or Update）を選択します。またどの列の情報をキー（SalesforceId or 外部Id）にするか、と結果を出力する列も設定します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/309797/1f49e64b-e2d2-9a7b-5a31-ad5e573a2e3e.png)

次の画面では、各項目のマッピングを設定します。
今回はSalesforceから取得したデータをそのまま更新に利用しているためほぼマッピング済みですが、既存システムから出力されたCSVをアップロードする際は、この設定をしっかりする必要がありますね。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/309797/d0c7e68b-a2d3-588c-b2da-158471af9c97.png)
※Insertの場合、ReadOnly項目をマッピングしているとエラーが発生します。Insertの場合はマッピングは必要最低限にしておいたほうがよさそうです。Updateでは特にエラー発生せずでした。
※マッピング情報の保存はできなさそうです

最後に「EXECUTE」で完了です。
Insertの場合、結果列にSalesforceIdが出力されます。

操作感はDataLoaderと大きな差異はないので、違和感なく使えると思います。

##限界に挑戦？！
とりあえず10000レコードInsertしてみました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/309797/0e40d25b-02ec-de7d-2b6a-948d125c2cff.png)

結果は、、
![image.png](https://qiita-image-store.s3.amazonaws.com/0/309797/ec680271-e8af-683f-a709-95a829ee441c.png)

ちゃんと登録されました！
Dev環境のため、データストレージが5MBしかないため、4000件以降LimitExceedが出てしまっていますが、きちんとレスポンスが返ってきました。所要時間は約5分ほどなので、DataLoaderと大きな差はなさそうです。もちろんカラム数などには依存するかもしれませんが、ある程度のデータ量には耐えられそうですね。
※バッチサイズは「200」固定のようです

#マクロとの組み合わせ
アドオンの実行をマクロに組み込めると、非常に強力だと思うのですが、現状(2018/12/19時点)うまくできず。。
アドオンのメニューオープンが定義されていないというスクリプトエラーが発生します。。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/309797/4b256f44-11e3-8096-ab4b-c0fefa31b070.png)


##まとめ
できることはDataLoaderとさほど変わらずですが、DataLoaderでよく実施する、Export→Excelで編集→Insert／Updateのような操作を、画面の切り替えをせず作業できるのはなかなか便利なのかなと思います。Nextなど画面遷移が発生する場面はDataLoaderに比べてちょっともっさりしていますが、そこまで気にはならないかと。

マクロも組み合わせて利用できると、できることの幅が一気に広がるのですが、現状できないので、今後のアップデートに期待です。単純にデータを入出力する、というだけでもなかなか便利だと思いますので、ぜひ利用してみてください。

Lightning Object Creatorやこのアドオン以外のGoogleSpreadSheet連携も発表されていますので、
今後も**Salesforce + Google Cloud**には注目していきたいですね！