SalesforceのAPI使用状況をSalesforce CLIから確認する #Salesforce

salesforce

どうも!西村祐二@大阪です。

SalesforceにはAPIの使用制限が設けられており、
他サービスと連携する際などにはAPIを使い過ぎないように注意して設計する必要があります。
SalesforceのGUI上の「環境」→「システム概要」からAPI使用状況を確認できますが
Salesforceにログインして対象のページに移動するのはすこし面倒だなと感じていました。

そんな中、最近オープンベータとなったSalesforce CLIを使えば簡単にAPI使用率を確認できる
コマンドが実装されていましたので今回そのコマンドをご紹介したいと思います。

SalesforceのAPI制限

まず、どのような制限があるのかおさらいしておきたいと思います。
エディションによってAPIをコールできる回数が決められています。

公式のドキュメントを見る限り、1時間に何回ではなく、24時間で何回と制限が決められています。

Salesforce のエディション ライセンスの種類ごとの API コール数 24 時間あたりの合計コール数
Developer Edition なし 15,000
・ Enterprise Edition
・ Professional Edition (API アクセス有効)
・ Salesforce: 1,000
・ Salesforce プラットフォーム: 1,000
・ Force.com - One App: 200
・ Gold Partner: 200
15,000 + (ライセンス数 × コール数)
最大 1,000,000
・ Unlimited Edition
・ Performance Edition
・ Salesforce: 5,000
・ Salesforce プラットフォーム: 5,000
・ Force.com - One App: 200
・ Gold Partner: 200
15,000 + (ライセンス数 × コール数)
Sandbox なし 5,000,000

また、APIにコールを送信するアクションの中でも、次の場合を対象外になります。

  • アウトバウンドメッセージ
  • Apex 呼び出し

また、次のSalesforce製品で行われた特定のAPIコールは使用制限にはカウントされません。

  • Heroku Connect
  • SalesforceIQ
  • Salesforce Marketing Cloud
  • Pardot

APIコールが指定した制限数の割合を超えた場合に、メールで指定ユーザに通知するように組織で設定できます。この設定を実行するには、[設定] から、[クイック検索] ボックスに「API 使用状況通知」と入力し、[API 使用状況通知] を選択します。

事前準備

・Salesforce CLIの環境構築を行っておいてください。

下記ページを参考に環境構築お願いします。

ベータ版Salesforce DXをセットアップしてみた

GUI上の表示

CLIから確認する前に比較として、GUI上にはどのようにAPIの使用状況が表示されるか確認しておきましょう。
確認方法は「環境」→「システム概要」から確認することができます。

今回、SandBox環境のAPI使用状況を確認します。

2017-08-04 23.05.40

右側のAPI使用状況に「8」と表示されており、24時間以内に、8回API要求をしたことがわかります。

コマンド

sfdx force:limits:api:displayというコマンドでAPIの使用状況を確認することができます。

今回、SandBox環境のAPI使用状況を確認します。また、SandBox環境は「sandbox」という名前でエイリアス設定しております。

出力結果のDailyApiRequestsがGUI上で表示されていたAPI使用状況と対応するようです。

$ sfdx force:limits:api:display -u sandbox
NAME                                   REMAINING  MAXIMUM
─────────────────────────────────────  ─────────  ─────────
ConcurrentAsyncGetReportInstances      200        200
ConcurrentSyncReportRuns               20         20
DailyApiRequests                       4999991    5000000
DailyAsyncApexExecutions               250000     250000
DailyBulkApiRequests                   10000      10000
DailyDurableGenericStreamingApiEvents  200000     200000
DailyDurableStreamingApiEvents         200000     200000
DailyGenericStreamingApiEvents         10000      10000
DailyStreamingApiEvents                200000     200000
DailyWorkflowEmails                    31000      31000
DataStorageMB                          209        209
DurableStreamingApiConcurrentClients   999        1000
FileStorageMB                          209        209
HourlyAsyncReportRuns                  1200       1200
HourlyDashboardRefreshes               200        200
HourlyDashboardResults                 5000       5000
HourlyDashboardStatuses                999999999  999999999
HourlyODataCallout                     10000      10000
HourlySyncReportRuns                   500        500
HourlyTimeBasedWorkflow                50         50
MassEmail                              5000       5000
SingleEmail                            5000       5000
StreamingApiConcurrentClients          1000       1000

REMAININGがあと何回API要求できるかの残りの回数となります。
MAXIMUMが24時間に何回API要求できるかの総数となります。
GUIと違って、残り何回API要求できるかという観点で表示されており
開発する際にはこちらのほうが参考になるかもしれません。
また、ファイルストレージの容量であったり、Emailに関する制限も確認することができます。

さいごに

いかがだったでしょうか。
API制限に引っかかり、Salesforceが止まってしまうと
業務に大きな影響を与えてしまう可能性があるため、
素早くAPIの使用状況を確認できるこのコマンドは重宝するのではないでしょうか。
また、API使用状況以外にも情報が取得できるので、
例えば、ファイルストレージの残容量が一定以下になったら通知するような仕組みも作れそうです。