1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Salesforce Reports and Dashboards REST API Curlコマンド偏

Last updated at Posted at 2022-02-08

CURLコマンドをSalesforceで活用するに戻る

Idしか分かっていないレポートが300件ほどあって、どうやって消したらいいかという質問がありました。

report deleting

色々考えたのですが、CURLコマンドでSalesforce Reports and Dashboards REST API を使うスクリプトを作って一気に消す方法がいいと思いました。ただ、提案しただけでは使い方が分からないということで私もチャレンジです。

レポートを削除するコードは以下のようです。さて、どうやって認証して使うのか。

/services/data/v34.0/analytics/reports/00OD0000001cxIE

Delete Reports

REST APIの認証の事前準備

いつもはBulk APIをCURLコマンドから操作しているので同じ方法と思いましたが、どうもセッションIdでは機能しなかったです。
仕方ないのでOAuth 2.0 による認証を試します。

手順はこちら

接続アプリケーションおよび OAuth 2.0 による認証

これも参考にしました。
クイックスタートの前提条件

  1. 接続アプリケーションの作成。(Consumer KeyとConsumer Secretを後で使います)
  2. 「API の有効化」権限があることを確認する
  3. API インテグレーション用の OAuth 設定の有効化

ここまでセット出来たら、アクセストークンを取得します。

ステップ 1: 認証を設定する

実際には改行しないで1行で作って下さい。

curl -s -S --tlsv1.2 https://MyDomainName.my.salesforce.com/services/oauth2/token 
-d 'grant_type=password' 
-d 'client_id=consumer-key' 
-d 'client_secret=consumer-secret' 
-d 'username=my-login@domain.com' 
-d 'password=my-password'
-d 'format=xml'
  • client_idの後に先ほど取得したconsumer-keyをセットします。
  • client_secretの後に先ほど取得したconsumer-secretをセットします。
  • usernameの後にこの環境にログインするためのユーザ名をセットします。
  • passwordの後にこの環境にログインするためのパスワードをセットします。
  • -d 'format=xml'は標準のJson出力をXml形式に変更するオプションです。なくても構いません。私がXmlの方が扱いやすいというだけの理由です。

このコマンドを実行すると以下のような結果が返ってきます。

内容は少し改変しています。

access_token 00D2x000006QA3P!ARcAQJoF13Gv0RnHAQHPFQTeml_xz.KxT_u7wTLleQu.DPDszPZAE6PHVYhUkGM4QOySONvtCKKCZ19Po4HjT3m5Q6AXGmRl
instance_url https://xxxxxx-3moqt3-dev-ed.my.salesforce.com
id https://login.salesforce.com/id/00D2x000006QA3PEAW/0052x000002rxxxxAU
token_type Bearer
issued_at 164429477eerr6
signature 5YPgl1m0FggjT1mSKUy/cFg7sv4b9Jr6LYv4pQ2G0eA=

この後で access_token とinstance_urlを使います。

実際のCurl での処理

curl -s -S --tlsv1.2 $instance_url/services/data/v53.0/analytics/reports/00O2x000003lQBlEAM 
-H "Authorization: Bearer $access_token" 
-H "X-PrettyPrint:1" 
-X DELETE
  • $instance_urlに先ほどのinstance_urlの値をセットします。
  • $access_tokenに先ほどのaccess_tokenの値をセットします。
  • 00O2x000003lQBlEAM は消したいレポートのIdです。

これでレポートが消せました。

後は一気に消すシェルを作れば大丈夫です。

こんな感じのシェルを作れば可能だと思います。レポートのIdの部分はExcel等で数式を使って差し込み印刷みたいにすれば簡単に作成できると思います。

report_delete.sh

#!/bin/bash
access_token='00D2x000006QA3P!ARcAQJoF13Gv0RnHAQHPFQTeml_xz.KxT_u7wTLleQu.DPDszPZAE6PHVYhUkGM4QOySONvtCKKCZ19Po4HjT3m5Q6AXGmRl'
instance_url='https://xxxxxx-3moqt3-dev-ed.my.salesforce.com'

curl -s -S --tlsv1.2 $instance_url/services/data/v53.0/analytics/reports/reportId_01 -H "Authorization: Bearer $access_token" -X DELETE

curl -s -S --tlsv1.2 $instance_url/services/data/v53.0/analytics/reports/reportId_02 -H "Authorization: Bearer $access_token" -X DELETE

curl -s -S --tlsv1.2 $instance_url/services/data/v53.0/analytics/reports/reportId_03 -H "Authorization: Bearer $access_token" -X DELETE

同じようなCURLを使ったREST APIの呼び出しの質問

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?