【初心者向け】SalesforceのオブジェクトをエクセルのPowerQueryで表示

Salesforceのオブジェクトをエクセルで見たいという要望がお客様から出たのと、自分でもパッとオブジェクトの中身を確認したいことがあったので、それのメモです。

##今回やりたいこと
・SFDCのオブジェクトをエクセルのPowerQueryで表示する

##環境
Windows10 64bit
Excel 2016

##PowerQueryの注意点
PowerQueryは2013からがサポートされています。Excel 2013の場合は[こちら](https://www.microsoft.com/ja-jp/download/details.aspx?id=39379)からDLしてください。
2016の場合はデフォルトで入っています。
本記事は2016での使い方を記事にしています。基本的な使い方は同じですので、問題はないと思います。

##PowerQueryの使い方
データ＞データの取得＞オンライン サービスからでSalesforce オブジェクトからを選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/202761/83b5e007-53fd-b2d6-8962-40e3b6dac8f8.png)
URLを指定されるので、運用環境（本番）かカスタムかを選択してください。
Sandboxの場合はカスタムで以下を指定してください。
https://test.salesforce.com/
![image.png](https://qiita-image-store.s3.amazonaws.com/0/202761/8797ce50-3f23-0a15-db17-ad40a5f0ff21.png)
Salesforceのログイン画面が表示されるのでログインし、ナビゲーターの画面で表示したいオブジェクトを選択して、読み込みを押してください。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/202761/2134e225-96d9-acd2-4552-be6590aeb7f3.png)
シートが追加され、選択したオブジェクトが表示されます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/202761/e2e90385-fa9e-0f61-8303-90231414dcc8.png)

##クエリの編集画面を開く
クエリと接続で右クリック＞編集でクエリエディタを開きます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/202761/24adfde0-61c3-4dd6-d240-a26b626a1340.png)


##表示する列を選択する
クエリエディタ画面で列の選択をクリックして、表示したい列を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/202761/62fe9e47-3dee-bc6a-3ca5-f1ebc0468502.png)

##表示する行を選択する（フィルタ、Where）
クエリエディタ画面で列にある矢印をクリックして、表示したい行を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/202761/e88bea54-5319-560b-dc32-c1e8c404400a.png)


##列の名前を変更する
クエリエディタ画面で列名をダブルクリックして変更します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/202761/0becd91a-9331-d5cb-2966-ec321c91809a.png)

##クエリの条件を再修正する
ここがちょっとややこしいです。今回で例では上の3つをやった後で、やっぱり列を追加したいということになったとします。
クエリエディタを開くと以下のような状態であるとします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/202761/f6e3762b-3b58-869a-f3c3-da8c70a2b6e0.png)
右の適用したステップで削除されたほかの列をダブルクリックして、列を追加します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/202761/8bdfd787-d012-d218-ece2-7bb2386387b4.png)

##複数のオブジェクトを結合したい（Join）
今までの話は1つのテーブルで完結していました。ですが実際には複数のオブジェクトから値を取りたいということがあると思います。今回は「Apex トリガ」オブジェクトの「作成者ID」に「ユーザ」オブジェクトを紐づけて「Username」を表示するようにします。

- データ＞データの取得＞オンライン サービスからでSalesforce オブジェクトからを選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/202761/83b5e007-53fd-b2d6-8962-40e3b6dac8f8.png)

- ナビゲーターで複数のアイテムの選択にチェックを入れて、「Apex トリガ」オブジェクトと「ユーザ」オブジェクトを選択し、編集ボタンを押します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/202761/0fa5cb15-b605-1592-b44b-15299cba6d86.png)

- クエリエディターでApex トリガを選択した状態で、クエリのマージをクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/202761/da8761bd-1c15-2355-93a0-d7ff2722c806.png)

- マージ画面が表示されるので、Joinしたい「ユーザ」オブジェクトをドロップダウンから選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/202761/acb890e8-c6c1-147a-cce6-181c3896c276.png)

- 結合したい列を選択し、結合の種類を選択します。結合の種類は今回は左外部（Left Join）とします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/202761/8c41d9e4-80e6-b1a1-77ed-19c5268bdbac.png)
一番右側にテーブルが結合されます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/202761/baf06e26-1497-7e96-e75b-548f5bec2cae.png)

- ユーザの右にあるボタンを押すと、列を選択できるので必要があれば抽出します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/202761/ccf42b6a-1326-6297-1d6e-e7a0e8389932.png)

##PowerQueryをマクロ(VBA)で使用する
追記予定です。しばらくお待ちください。