こんにちは、なかやまです。
Salesforceの世界は広く、全てを把握することは困難です。Salesforceは年に3回のリリースがあるのですが、そのリリースノートも最新版だと600ページを超えるボリュームになっており、エンジニアもキャッチアップが大変厳しいです。
そんな機能(や設定)は無い!と決めつける前に、少し調べることをおすすめします。
さて、今日のお話は"API限定ユーザ"についてです。
それではどうぞ↓
「API限定ユーザでバッチ登録させるには?」
よくSalesforce関係の相談を受けるのですが。
今日は定期的に上級デベロッパーに質問する人から聞いた内容になります。(複数人に聞いて統計まで出してくれるんですよ)
質問の内容は、API限定ユーザを作ってバッチ実行ユーザに指定したい。というお話でした。
このAPI限定ユーザをバッチ実行ユーザとして指定することで、バッチ内でレコードを作成/更新するユーザとして利用したいというのが本題のようです。System.runAsメソッドで実行ユーザを指定できる機能があるのですが、これはテストコード用の設定だし、どうしようーというのがお悩みとのこと。
ちなみにですが、API限定ユーザの設定を見たことがなくて、??となりました。皆様ご存知ですか?
どこで設定するかというと、プロファイルの設定欄にありました。Developer Editionの環境を必死で検索したのですが、どうやらエンタープライズ版にしかない設定のようです。(30分は検索した気がします。時間を返して。設定できないなら非表示じゃなくてグレーアウトでもいいじゃない)
StackExchange
このAPI限定ユーザの設定をONにしてすることで通常のログイン画面からログインさせないようにすることができるんだそうです。外部連携用のユーザとして使いやすそうですね。
次の方法で設定できないか考えてみました。
API限定ユーザでバッチ登録をさせるには
- システム管理者がAPI限定ユーザとして代理ログインしてスケジュール登録する(実際に試してもらってできました)
- スケジュール登録するプログラムをForce.com CLIとかで外からスケジュール登録する(※試せる環境がなくて、未検証です)
今のところ、Apexバッチ・スケジュールを指定したユーザで実行できる!という機能がないようで、どうにかしてAPI限定ユーザからスケジュール登録させる必要があります。
代理ログインについては、以下の設定が有効になっていると設定しやすいよ。
組織の「管理者は任意のユーザでログインできます」の有効化
https://help.salesforce.com/articleView?id=000213285&language=ja&type=1
この機能いつリリースされたんだ!?と調べたのですがリリースノートが見つからず。。もともと実装されていたものかもしれませんが、全然気付かなかったことにびっくりです。
参考
help: API Integration ユーザのユーザ権限
https://help.salesforce.com/articleView?id=000176281&language=ja&type=1
help:「API 限定ユーザ」権限がプロファイルまたは権限セットに設定されたため、ログインに問題が発生しています
https://help.salesforce.com/articleView?id=000003819&language=ja&type=1