Salesforceのレポートを一括削除したいという質問があります。
Can we bulk delete reports using data loader?
残念ながらSalesforceレポートはメタデータなので質問にあるようにdata loaderでは消せません。
Salesforce Reports and Dashboards REST APIを使えば可能です。以前にcurlコマンドを使って実際に削除して事はあります。この時はLinuxのシェルを使って連続削除を実現しました。
今回1件にレポートなら簡単にPostmanを使って実行できることは分かっていますが、一括処理(削除対象のレポートIdのファイルを使って連続して消す処理)ができないかを探ってみたいと思います。
postman.setNextRequest()
検索してみると以下の回答が見つかりました。
このコレクションでは、コレクション ランナーと関数を使用してパラメーターを変更しながら同じリクエストをループする方法を示します。postman.setNextRequest()
試してみるには、コレクションを開き、「実行」をクリックしてコレクションランナーを開きます。実行したいクエリを選択して実行してください。
元になった質問が2つ紹介されていましたが、読んでも実際にどうしたらいいかは分からなかったですね。理解できませんでした。
ここにファイルを使った例が回答されています。関数は使ってないみたいです。
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 リクエストのそれぞれが成功したかどうかを確認できます。
この辺りが関係するのかな?
まずは、削除しない安全そうなAPIで操作を確かめます
ちょうどこれがメタデータの取得なので操作を間違って問題ないでしょう。
URLは以下を使います。今回変数は{{reportId}}を使います。
{{_endpoint}}/services/data/v{{version}}/analytics/reports/{{reportId}}/describe
保存してDescribe という名前に変更します。
また、複数起動したときに期待通りに動いているかを確かめるために、レポート名を表示しておきます。
pm.test('reportName', () => {
const response = JSON.parse(pm.response.text())
console.log(response.attributes.reportName)
});
複数実行させるためのIdを記述したファイルを準備します。reportId.json
[
{"reportId": "00O5i00000Bnw8ZEAR"},
{"reportId": "00O5i00000Ba0PdEAJ"}
]
これで準備ができました。
コレクションの概要に戻ります。
「実行」を選択します。
今回流す処理を選択します。
繰り返し流す回数を入力します。 今回は2回
[ファイルの選択:Select File]ボタンを使用してデータ ファイルを選択します。
Run Salesforce Platform APIsボタンをクリックします。
念のためコンソールも確認します。
ちゃんとレポート名が出力されています。無事にできたようです。
レポートの削除
{{_endpoint}}/services/data/v{{version}}/analytics/reports/{{reportId}}
実行結果が表示されていたら、実行ボタンをクリックします。
実行するコレクションを選択します。
実行回数を2回、ファイルを選択して実行します。
204が返ってきているので、成功していますね。
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.