Salesforce: APIで用意されている機能について
SalesforceにはいくつかのAPIが用意されています。こういうことをやりたいときにこれを使えばいいというのがわかるようにまとめてみました。Rest API、Bulk APIは外していて、SOAP APIに限定しました。(APIVer40の時に書いています)
メソッド | 処理内容 | どのAPIの機能か | |||
Enterprise/Partner
|
Metadata
|
Apex
|
Tooling
|
||
convertLead | リードを取引先にする。 | 〇 | |||
changeOwnPassword | 自身のパスワードを変更する。 | 〇 | |||
create | レコードを作成する。 | 〇 | |||
delete | レコードを削除する。 | 〇 | |||
describeGlobal | 主に組織内のSobject情報をリストで取得する。 | 〇 | |||
describeSObject | Sobject情報を取得する。 | 〇 | |||
describeXXX | その他の情報XXXを取得できる。 | 〇 | |||
emptyRecycleBin | ゴミ箱を空にする。 | 〇 | |||
executeListView | リストビューを実行し、結果を取得する。 | 〇 | |||
findDuplicates | 登録する前に重複ルールに該当結果を取得する。 | 〇 | |||
performQuickActions | アクションを実行する。 | 〇 | |||
login | ログインする。(セッションIDと、インスタンスURLを取得する) | 〇 | 〇 | ||
logout | ログアウトする。(ログイン時のセッションIDを終了する。) | 〇 | 〇 | ||
merge | レコードをマージする。(リード、取引先、取引先責任者に限定された機能) | 〇 | |||
process | 承認プロセスの操作をする。 | 〇 | |||
query | SOQLを実行し、レコードを取得する。 | 〇 | |||
queryAll | SOQLを実行し、削除済みレコードを含めてレコードを取得する。 | 〇 | |||
queryMore | query/queryAllの次の結果を取得する。(検索結果の件数が多い場合、何度かにわけて結果を取得する) | 〇 | |||
renderEmailTemplate | メールテンプレート文字列とレコードの値をマージする。 | 〇 | |||
renderStoredEmailTemplate | 定義したメールテンプレートとレコードの値をマージする。 | 〇 | |||
resetPassword | 指定したユーザのパスワードをリセットし、リセット後のパスワードを取得する。(通知メールを送るわけではない) | 〇 | |||
setPassword | 指定したユーザに指定したパスワードをセットする(ログイン後、パスワードの変更画面が表示される。) | 〇 | |||
retrieve | SalesforceIdを指定してレコードを取得する。 | 〇 | |||
search | グローバル検索のようにレコードを検索し、結果を取得する。 | 〇 | |||
sendEmail | 指定した宛先、件名、本文、添付ファイルでメールを送信する。 | 〇 | |||
sendEmailMessage | Sobject「メールメッセージ(EmailMessage)」のドラフトメールを送信する。 | 〇 | |||
undelete | ゴミ箱から復元する。 | 〇 | |||
update | レコードを更新する。 | 〇 | |||
upsert | レコードをアップサートする。 | 〇 | |||
getServerTimestamp | Salesforceからサーバ時刻を取得する。 | 〇 | 〇 | ||
getUpdated | 指定されたオブジェクトに対して指定された期間内に更新されたレコードを取得する。 | 〇 | |||
getDeleted | 指定されたオブジェクトに対して指定された期間内に削除されたレコードを取得する。 | 〇 | |||
getUserInfo | ログインしたユーザ情報を取得する。 | 〇 | 〇 | ||
invalidateSessions | 指定されたセッションIDを終了する。 | 〇 | 〇 | ||
deploy | メタデータをデプロイする。 | 〇 | |||
checkDeployStatus | デプロイの状況を取得する。(deployは非同期のため定期的に状況をチェックする。) | 〇 | |||
cancelDeploy | デプロイをキャンセルする。 | 〇 | |||
deployRecentValidation | クイックリリースする。 | 〇 | |||
retrieve | メタデータを取得する。 | 〇 | |||
checkRetrieveStatus | メタデータの取得状況を取得する。(メタデータの取得は非同期のため定期的に状況をチェックする。) | 〇 | |||
describeMetadata | メタデータタイプの一覧を取得する。 | 〇 | |||
listMetadata | 指定したメタデータタイプのコンポーネント一覧を取得する。 | 〇 | |||
createMetadata | メタデータコンポーネントを作成する。 | 〇 | |||
upsertMetadata | メタデータコンポーネントをアップサートする。 | 〇 | |||
updateMetadata | メタデータコンポーネントを更新する。 | 〇 | |||
deleteMetadata | メタデータコンポーネントを削除する。 | 〇 | |||
readMetadata | メタデータコンポーネントを取得する。 | 〇 | |||
renameMetadata | メタデータコンポーネントをリネームする。 | 〇 | |||
compileClasses | クラスを作成する。(開発環境用) | 〇 | |||
compileTriggers | トリガを作成する。(開発環境用) | 〇 | |||
compileAndTest | クラスを作成しテストする。(本番環境用) | 〇 | |||
runTests | テストを実行する。 | 〇 | 〇 | ||
executeAnonymous | AnonymousApexを実行する。 | 〇 | 〇 | ||
create | Tooling API objectsを作成する。 | 〇 | |||
update | Tooling API objectsを更新する。 | 〇 | |||
upsert | Tooling API objectsをアップサートする。 | 〇 | |||
delete | Tooling API objectsを削除する。 | 〇 | |||
search | グローバル検索のようにTooling API objectsを検索し、取得する。 | 〇 | |||
query | SOQLのようにTooling Api Objectsを検索し、取得する。 | 〇 | |||
queryAll | 削除されたTooling API objectsを含めてSOQLのようにTooling API objectsを検索し、取得する。 | 〇 | |||
queryMore | query/queryAllの次の結果を取得する。(検索結果の件数が多い場合、何度かにわけて結果を取得する) | 〇 | |||
describeGlobal | Tooling API objectsの一覧を取得する。 | 〇 | |||
describeSObject | 指定したTooling API objectsの詳細を取得する。 | 〇 | |||
describeXXX | その他のTooling API objectsの情報を取得する。 | 〇 | |||
retrieve | Idを指定してTooling API objectsを取得する。 | 〇 | |||
getUpdated | 指定された期間内に更新されたTooling API objectsを取得する。 | 〇 | |||
getDeleted | 指定された期間内に削除されたTooling API objectsを取得する。 | 〇 | |||
runTestsAsynchronous | 非同期でテストを実行する。 | 〇 |
※APIメソッドはすべてではありません。
まとめていく中で、Tooling APIの使い道がピンときませんでした。開発者コンソールの一部では使っていると思いますが、自分の中ではこういう所で使えそうというイメージが持てませんでした。
Enterprise/Partner APIと同じ名前のメソッドが、Tooling APIで定義されていますが、取得するのがTooling API Objectsというメタデータ寄りの定義情報になります。
メタデータの作成や取得をするならMetadata APIの方を使うことになりますし、Tooling APIだけが持っているメソッドはほぼありません。
Tooling API Objectsがいまいち理解できていないのだと思いますが、今は使う場面がありません。
あと、APIを使う上での注意事項は次になります。
- 基本logoutは使いません。データ連携などで、同じユーザが同じタイミングで複数の処理を動作させている可能性があります。1つの処理でlogoutすると、同時に動いているほかの処理でセッションIDが無効となりエラーとなってしまいます。
- APIのコール数の上限や、送信メール数の制限を超えないようにします。
- sendEmailでメールを送信する時は、エラーとなる宛先があるなどSalesforceに負荷がかかると処理が中断される場合があります。
- レコードの作成、更新などでもSalesforceに負荷がかかると処理が中断される場合があります。