tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:開発者コンソールで試すTooling API

Tooling APIとは開発者向けに用意されたAPIです。ApexCodeの情報を取得したりできます。開発者向けドキュメントを見てみるとこんな感じで使いますとサンプルコードが記載されています。

f:id:tyoshikawa1106:20150212155813p:plain


ひとまず実際に動かしてみないとわからないこともあるのでコピペで動くサンプルコードを用意しました。


Apexクラスで動かすためのコードですが、開発者コンソールからも動かすことが可能です。こんな感じでコードを貼り付けて実行します。

f:id:tyoshikawa1106:20150212160609p:plain


デバッグログで正常に実行されたことを確認できると思います。

f:id:tyoshikawa1106:20150212160723p:plain


重要なところとして次の2行の処理でセッションIDを渡し、戻り値をJSON形式に指定しています。

req.setHeader('Authorization', 'Bearer ' + UserInfo.getSessionId());
req.setHeader('Content-Type', 'application/json');

セッションIDを渡さないと次のように認証エラーが発生してしまいます。

f:id:tyoshikawa1106:20150212161203p:plain


また、サンプルにはhttp://na1.salesforce.com/というように記載されていますが、インスタンス部分は組織によって変更されます。本番環境とSandbox環境でも違いがあるので直接指定するのは望ましくありません。

次のようにすることでインスタンス部分を動的に取得できます。

URL.getSalesforceBaseUrl().toExternalForm()


最後にTooling APIを実行する場合は、リモートサイトの設定が必要になります。通常のページとVisualforceページのインスタンスは微妙に違うのでそれぞれの設定をしておくと安全だと思います。

f:id:tyoshikawa1106:20150212161416p:plain


この設定を忘れると実行時に次のようなエラーが発生します。

f:id:tyoshikawa1106:20150212161521p:plain


ひとまずこれでTooling APIを動かしてみることができると思います。後は開発者向けドキュメントを見ながらどんなことができるのか確認していくといろいろ試せると思います。

追記

Post処理の実行例