tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:APIバージョン一括更新機能をつくってみました

開発したApexコードのAPIバージョンを一括更新できる機能がほしかったのでちょっとつくってみました。


とりあえずAPIバージョンをApexで更新できるか確認してみました。次のようにSOQLでApexPageにアクセスしてApiVersionに値をセットするところまでは問題ありませんでした。

f:id:tyoshikawa1106:20131230082913p:plain


しかし、UPDATE処理を実行するとDMLエラーが発生しました。

f:id:tyoshikawa1106:20131230083207p:plain


Apexによる更新はできなそうなのでSoapAPIをつかって更新することにしました。


画面はこんな感じになりました。

f:id:tyoshikawa1106:20131230223248p:plain


パッケージのURLはこちら → Apex Code API Version Update Package Link

使い方

- Code Type -

  • 検索対象のオブジェクトを指定します。
  • 対象はページとコンポーネントのみとなります。

f:id:tyoshikawa1106:20131230225958p:plain:w300

- Search -

  • 検索条件としてAPIバージョンと名前を指定できます。
  • 名前は前方一致検索となります。

f:id:tyoshikawa1106:20131230230147p:plain:w300

- New Api Version -

  • 更新後のAPIバージョンを指定できます。
  • この選択リストで指定したバージョンに更新されます。

f:id:tyoshikawa1106:20131230230337p:plain:w300

Searchボタン

  • 検索処理を実行します。

f:id:tyoshikawa1106:20131230230607p:plain:w300

Updateボタン

  • 選択したレコードのAPIバージョンを更新します。
  • 対象が「ページ」の場合は、「Update Apex Page」と表示され、「コンポーネント」の場合は、「Update Apex Component」と表示されるようになっています。
  • 対象レコードが1件以上存在する場合のみ表示されます。

f:id:tyoshikawa1106:20131230230856p:plain

使用前の注意

  • APIバージョンの選択リストで表示される値はカスタム設定で管理しているので、最初にカスタム設定に値を登録する必要があります。選択できるAPIバージョンの最大値と最小値はここで調整できます。

f:id:tyoshikawa1106:20131230223249p:plain

うまくいかなかったところ

クラスとトリガーの更新

最初はクラスとトリガーも更新できるようにする予定だったのですが、クラスとトリガーに対してAPIバージョンの更新処理を実行してみたところ、「insufficient access rights on cros-reference id」エラーが発生してしまいました。解決方法が見つからなかったので今回はあきらめて除外することにしました。

f:id:tyoshikawa1106:20131230231945p:plain

APIバージョンの最新値

選択リストで使用するAPIバージョンの最新値を取得する方法がわからなかったので、カスタム設定にもたせることにしました。APIバージョン項目のデータ型が選択リストかと思っていたのですが、選択リスト型ではなく数値型だったため最新のAPIバージョン情報の取得がうまくいきませんでした。。

f:id:tyoshikawa1106:20131230232549p:plain:w200


2つほど思うようにできなかったのが残念ですが、とりあえずページとコンポーネントは問題なく更新できたので良かったです。新しいAPIバージョンが追加されたときに役に立つんじゃないかと思います。