プログラマ38の日記

主にプログラムメモです。

Salesforce/Excel: 直接AnonymousApexを実行するExcelマクロを作成しました

Salesforceで用意されている関数を試してみたり、開発した関数の動きを確認したり、AnonymousApexを利用したい時があります。

 

AnonymousApexは、開発者コンソールやForce.com IDESalesforce Workbenchで実行できますが、実行結果をExcelで保存したいなーと思い直接ExcelからAnonymousApexを実行するマクロを作成しました。
※このツールは、TLS1.1以上で通信する必要があり、Windows10や、TLS1.1以上を使うようにレジストリを変更したWindows7などで利用できます。

 

ダウンロードはこちらからです。

 

ExcelのテキストボックスのApexコードを実行できます。

 

使い方は次の通りです。

 

Salesforceの接続情報を指定
②通信設定
③Apexコードを入力
④ログカテゴリ・ログレベルを選択し、実行ボタンをクリック

 

 

f:id:crmprogrammer38:20171121162553p:plain

実行後、結果が出力されます。

 

ApexAPIのexecuteAnonymousメソッドを利用していて、出力結果を開発者コンソールの結果に近づけているのがポイントです。(開発者コンソールの結果と多少違いがあります) 

最後に

例えば、指定したレポートの結果レコードを取得するクラス(Reports.ReportFact)の使い方など、動かしてみないとわからないクラスを使う時にAnonymousApexで実行イメージを確認しておくと便利です。

ただ、ちょっと書くだけなのにForce.com IDEを立ち上げるのは重いなーという時にExcelマクロはちょうどいいかなと思います。

処理としては常にログインしてから、Apexの実行をするので、セッションがタイムアウトすることはありません。Workbenchだと、せっかく書いたコードがセッションタイムあうとともに消えてしまい悲しい思いをしますがそういうことはありません。

 

Salesforce APIを操作するExcelマクロを色々用意してみましたが、今回のAnonymous Apex実行で一通りのAPIを触った形となります。(Tooling APIは使っていませんが、私自体が使い道がわかっておりません。。)

Excelマクロが実行できて、TLS1.1以上の通信ができる必要があり、利用できる環境は非常に限定的なものとなっています。

そして、そもそもAnonymous Apex自体、利用する頻度は低いので、ほとんど利用する方はいないとは思います。

 

あと、このExcelマクロを作成していて、ExcelのActive Xコントロールのテキストボックスでは、Redo/Undoが使えないことがわかりました。

 

それでも、このExcelマクロを使ってみようと思う方がいるなら大変うれしく思います。