開発したApexコードのAPIバージョンを一括更新できる機能がほしかったのでちょっとつくってみました。
とりあえずAPIバージョンをApexで更新できるか確認してみました。次のようにSOQLでApexPageにアクセスしてApiVersionに値をセットするところまでは問題ありませんでした。
しかし、UPDATE処理を実行するとDMLエラーが発生しました。
Apexによる更新はできなそうなのでSoapAPIをつかって更新することにしました。
画面はこんな感じになりました。
パッケージのURLはこちら → Apex Code API Version Update Package Link
使い方
- Code Type -
- 検索対象のオブジェクトを指定します。
- 対象はページとコンポーネントのみとなります。
- Search -
- 検索条件としてAPIバージョンと名前を指定できます。
- 名前は前方一致検索となります。
- New Api Version -
- 更新後のAPIバージョンを指定できます。
- この選択リストで指定したバージョンに更新されます。
Searchボタン
- 検索処理を実行します。
Updateボタン
- 選択したレコードのAPIバージョンを更新します。
- 対象が「ページ」の場合は、「Update Apex Page」と表示され、「コンポーネント」の場合は、「Update Apex Component」と表示されるようになっています。
- 対象レコードが1件以上存在する場合のみ表示されます。
使用前の注意
- APIバージョンの選択リストで表示される値はカスタム設定で管理しているので、最初にカスタム設定に値を登録する必要があります。選択できるAPIバージョンの最大値と最小値はここで調整できます。
うまくいかなかったところ
クラスとトリガーの更新
最初はクラスとトリガーも更新できるようにする予定だったのですが、クラスとトリガーに対してAPIバージョンの更新処理を実行してみたところ、「insufficient access rights on cros-reference id」エラーが発生してしまいました。解決方法が見つからなかったので今回はあきらめて除外することにしました。
APIバージョンの最新値
選択リストで使用するAPIバージョンの最新値を取得する方法がわからなかったので、カスタム設定にもたせることにしました。APIバージョン項目のデータ型が選択リストかと思っていたのですが、選択リスト型ではなく数値型だったため最新のAPIバージョン情報の取得がうまくいきませんでした。。
2つほど思うようにできなかったのが残念ですが、とりあえずページとコンポーネントは問題なく更新できたので良かったです。新しいAPIバージョンが追加されたときに役に立つんじゃないかと思います。