PostmanからSalesforce Reports and Dashboards REST API を呼び出してレポートの複製をつくる

レポートの複製を簡単に作りたいという質問があります。

以前に大量のレポートを簡単に消したいとの質問があって、curlコマンドからSalesforce Reports and Dashboards REST APIを呼び出して対応することを試したことがあります。

[Salesforce Reports and Dashboards REST API](https://qiita.com/Keiji_otsubo/items/d6ceda32fdd8fe132b60)

やり方が分かってしまえば、難しくはないのですがかなり試行錯誤しましたね。今回はPostmanを使って対応してみたいと思います。


# 初めてPostmanを使ってSalesforceのAPIを操作する場合の設定

以下のモジュールを参考にして設定します

[Quick Start: Connect Postman to Salesforce](https://trailhead.salesforce.com/content/learn/projects/quick-start-connect-postman-to-salesforce)

1. Salesforce でクロスオリジンリソース共有を設定する

以下のように設定します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/28345e1a-1d73-8894-4740-f85efcf2aacc.png)


2\. Postman アカウントにサインインするか、アカウントにサインアップします。
3\. Workspacesメニューを選択します。
4\. Create Workspace を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/fb92401f-4d22-f989-370c-8e44d1168484.png)

5\. ワークスペースに SalesforceCollection という名前を付けます。

6\. Nextをクリックして進みます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/17a197e6-7c3f-6f22-3fe9-97d80695c131.png)

7\.  可視性をPersonalに設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/15b3ac82-6856-aeeb-8e84-fbee7cd4a5e7.png)

8\. Create Workspaceをクリックします。

9\. Salesforce コレクションをフォークします。public Salesforce Developers workspace を開いて、Salesforce API コレクションのフォークを作成します(リンクをクリック)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/6b77a6cc-11d3-6062-d75d-b313083c69eb.png)

10\. Collectionsで、Salesforce Platform API を選択して展開します。

11\.  <img width="30"  src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/4e595dd6-54c8-e8e5-8ddf-ae518d94cdb0.png">Create Forkをクリックして、コレクションのフォークを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/ee0d071c-a2a1-f4c4-6a02-11af239ac86a.png)

12\. 「MySalesforceAPIFork」と入力します。
13\. SalesforceCollection をワークスペースとして保持します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/acf9a067-0c5d-61a4-0aa9-505bc30c88de.png)

14\. Fork Collectionをクリックします

15\. Salesforceの組織に認証して接続します。

+ ブラウザで 1 つの 組織にのみログインしていることを確認してください。
+ Postman の コレクション で、SSalesforce Platform APIsを選択する必要があります。
+ No Environment  が選択されていることを確認してください。
+ Authorizationタブが開いているはずです。
+ タイプは OAuth 2.0 である必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/f793a88c-1b32-5ec1-af2d-638f412d13c4.png)

16\. Get New Access Tokenをクリックします。下の方にあるのでスクロールしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/a38846f0-3d24-b0d8-8533-eddda21cd8c7.png)


17\. instance_url が Trailhead Playground を指していることを確認します。これをコピーします。重要です。
もしかしたら、lightning.force.comがmy.salesforce.comになっているかもしれませんが、このURLを使います。

18\. Use Tokenをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/94ffb58b-cdc3-bb1d-9d46-7546da401c9f.png)

19\. Variables タブをクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/ecac0969-6e48-278c-5881-a38c34d6e496.png)

_endpoint 行の CURRENT VALUE 列に、手順 17 でコピーした instance_url 値を貼り付けます。

入力箇所がよく分からん。　先頭にカーソルをもっていく

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/f0157be0-797f-57b1-1f9c-69a2488e9568.png)

20\.  Saveボタンをクリックします。

どこにある？　色が薄くて探しにくい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/d83e9ba7-4645-c8b3-4b84-88a458204a41.png)

何か変更した時だけ機能するようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/42d80f56-fd3d-0b22-6b53-e9c76ee00a3a.png)




これで設定は終了です。念のため以下のようにして接続できるかを確かめます。

# 接続できたかの確認

1. コレクション で、Salesforce Platform API を選択して展開します。
2. RESTを選んで展開します。
3. GET Limitsを選択します。メイン パネルで Limits が開きます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/4773f527-fe7c-847e-ab7c-d172404125c5.png)

4\. sendをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/f39bcf6e-c4fa-7a0e-bf0c-40ee3882864a.png)

無事接続できているとこのような応答が返ってきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/2d34cfa1-d177-a1e5-0e44-3e690fe6c7d6.png)

# Clone Reportsを使います。

[Clone Reports](https://developer.salesforce.com/docs/atlas.en-us.api_analytics.meta/api_analytics/sforce_analytics_rest_api_clone_report.htm)

cloneIdに複製したいレポートのIdを指定してPostメソッドで送信すればいいみたいです。

```
/services/data/v34.0/analytics/reports?cloneId=00OD0000001cxIE
```
Postなので、Bodyに以下のように新しいレポート名を指定すればよさそうです。

```
{ "reportMetadata" :
   {"name":"myNewReport"}
}
```

Limitsタブの横の+をクリックしてタブを作ります。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/6edc977a-b62f-9718-fb38-d8fc2dc4d82b.png)

以下のように入力してPOSTメソッドを選択します。

```
{{_endpoint}}/services/data/v{{version}}/analytics/reports?cloneId=
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/77325ea3-9d56-c0f0-c7b0-67f46cd59224.png)

パラメータに複製したいレポートのIdを入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/f1a87bcc-d3fb-ab9b-724d-a06e680d2472.png)


下記のようにBodyを入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/b6d34447-88be-a352-ce9c-29b0092afb70.png)

送信する前に保存しておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/a6dd2538-ff78-9fb5-bdb3-770fe9996dc3.png)

保存できたら、送信ボタンをクリックします。

このような応答があれば成功です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/7c58abab-595b-8a05-1b13-5ca4362f2e23.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/b74acf55-e390-52b4-84cf-03b5db4b14e0.png)

Salesforceの画面からも確認してみましょう。ちゃんと新しいレポートが複製されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/3b047e9e-33a6-9a0a-8a70-b858c1fa1a26.png)