Postmanを使ってSalesforceのレポートを一括削除する

[Postmanのまとめに戻る](https://qiita.com/Keiji_otsubo/items/84098dc24465d5787ea6)



Salesforceのレポートを一括削除したいという質問があります。

[Can we bulk delete reports using data loader?](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007VJYOhSAP)

残念ながらSalesforceレポートはメタデータなので質問にあるようにdata loaderでは消せません。
Salesforce Reports and Dashboards REST APIを使えば可能です。以前にcurlコマンドを使って実際に削除して事はあります。この時はLinuxのシェルを使って連続削除を実現しました。

今回１件にレポートなら簡単にPostmanを使って実行できることは分かっていますが、一括処理（削除対象のレポートIdのファイルを使って連続して消す処理）ができないかを探ってみたいと思います。

# postman.setNextRequest()

検索してみると以下の回答が見つかりました。

+ [Loop request with different data](https://www.postman.com/postman/workspace/postman-answers/collection/9215231-25b72aab-2c6a-4941-832d-dd47e142ff2a)

>このコレクションでは、コレクション ランナーと関数を使用してパラメーターを変更しながら同じリクエストをループする方法を示します。postman.setNextRequest()
試してみるには、コレクションを開き、「実行」をクリックしてコレクションランナーを開きます。実行したいクエリを選択して実行してください。


元になった質問が２つ紹介されていましたが、読んでも実際にどうしたらいいかは分からなかったですね。理解できませんでした。

ここにファイルを使った例が回答されています。関数は使ってないみたいです。

https://community.postman.com/t/running-a-request-multiple-times-with-different-data-sets/1064/3


UserNames.json という JSON 構造化データ ファイルを作成します。

```
[
{"username": "AsdBsd"},
{"username": "asd123"},
{"username": "123456"},
{"username": "123asd"},
{"username": "asdfghjklzxcvbnmqwertyuio"}
]
```

あとは GET リクエストを実行する

{{url}}/dev/users/isUserNameAvailable?username={{username}}

コレクション ランナーで… UserNames.json … をデータ ファイルとして選択して実行します。この例では、そのファイルを選択すると、反復回数が自動的に 5 に設定されます。

反復ごとに、EOF に達するまでファイル内の 1 つの「ユーザー名」を連続して取得します。ファイル内の各「ユーザー名」は、GET リクエストの {{username}} に置き換えられます。

その後、「テスト」スクリプトに何かを記述して、GET リクエストのそれぞれが成功したかどうかを確認できます。


この辺りが関係するのかな？

+ [インポートされたデータを使用して収集を実行する](https://learning.postman.com/docs/collections/running-collections/working-with-data-files/)
+ [収集実行時のリクエストの順序をカスタマイズする](https://learning.postman.com/docs/collections/running-collections/building-workflows/)

# まずは、削除しない安全そうなAPIで操作を確かめます

ちょうどこれがメタデータの取得なので操作を間違って問題ないでしょう。

[レポートのメタデータを取得する](https://developer.salesforce.com/docs/atlas.en-us.api_analytics.meta/api_analytics/sforce_analytics_rest_api_get_reportmetadata.htm)

URLは以下を使います。今回変数は{{reportId}}を使います。

```
{{_endpoint}}/services/data/v{{version}}/analytics/reports/{{reportId}}/describe
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/e12b484f-0f6b-af2e-4876-0b1d5eb61cd0.png)

保存してDescribe という名前に変更します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/384f21c9-4ff6-956d-b029-bbd86de6bd9b.png)

また、複数起動したときに期待通りに動いているかを確かめるために、レポート名を表示しておきます。

```
pm.test('reportName', () => {
    const response = JSON.parse(pm.response.text())
     console.log(response.attributes.reportName)    
 });
```


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/37929117-8194-e06e-a0d5-934ddbf13c97.png)

複数実行させるためのIdを記述したファイルを準備します。reportId.json

```
[
{"reportId": "00O5i00000Bnw8ZEAR"},
{"reportId": "00O5i00000Ba0PdEAJ"}
]
```

これで準備ができました。

コレクションの概要に戻ります。 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/910dcccc-c8df-2744-5f31-266b41659e16.png)


「実行」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/d4088415-3e78-d743-c264-9582e1f910da.png)


今回流す処理を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/c259d09a-3e56-ad83-f32c-9cc390f9da21.png)

繰り返し流す回数を入力します。　今回は２回

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/25d9cf23-f9b9-6ea1-2fed-6bfbe5a2eef2.png)


[ファイルの選択:Select File]ボタンを使用してデータ ファイルを選択します。

Run Salesforce Platform APIsボタンをクリックします。


２回流れました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/8577d560-636e-dd55-9a7d-f05aa007ef0d.png)


念のためコンソールも確認します。

ちゃんとレポート名が出力されています。無事にできたようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/254eb1c1-5afa-1095-9d23-b123445b2883.png)

# レポートの削除

```
{{_endpoint}}/services/data/v{{version}}/analytics/reports/{{reportId}}
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/2d1ff7e5-3b3c-1700-04c8-becf2edc1136.png)

実行結果が表示されていたら、実行ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/f68098cf-502c-1368-6d54-6c6c8f301523.png)


実行するコレクションを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/de79c61c-317f-ddfa-fbde-aea45a7d9416.png)

実行回数を２回、ファイルを選択して実行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/96651f2b-5185-f283-2bba-babc2cdba4db.png)

204が返ってきているので、成功していますね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/a9c7734f-e4c1-8f8b-98f5-fcc7c5ecd6eb.png)


This DELETE request /services/data/v34.0/analytics/reports/00OD0000001cxIE to the Report resource deletes the report and returns a 204 HTTP response code with no content in the response body.

https://developer.salesforce.com/docs/atlas.en-us.api_analytics.meta/api_analytics/sforce_analytics_rest_api_delete_report.htm