セールスフォースの豆知識2.0

セールスフォースの開発に役立つTipsをメインに、セールスフォースの新機能や関連ニュースなどをお届けします。

API限定ユーザでバッチ登録させるには?

こんにちは、なかやまです。

Salesforceの世界は広く、全てを把握することは困難です。Salesforceは年に3回のリリースがあるのですが、そのリリースノートも最新版だと600ページを超えるボリュームになっており、エンジニアもキャッチアップが大変厳しいです。

そんな機能(や設定)は無い!と決めつける前に、少し調べることをおすすめします。

 

さて、今日のお話は"API限定ユーザ"についてです。 

f:id:flect_nakayama_san:20170605184921j:plain

 

それではどうぞ↓

「API限定ユーザでバッチ登録させるには?」

 

よくSalesforce関係の相談を受けるのですが。

f:id:flect_nakayama_san:20170613131622j:plain

 

 

今日は定期的に上級デベロッパーに質問する人から聞いた内容になります。(複数人に聞いて統計まで出してくれるんですよ)

f:id:flect_nakayama_san:20170613131634j:plain

 

質問の内容は、API限定ユーザを作ってバッチ実行ユーザに指定したい。というお話でした。

f:id:flect_nakayama_san:20170613163430j:plain

このAPI限定ユーザをバッチ実行ユーザとして指定することで、バッチ内でレコードを作成/更新するユーザとして利用したいというのが本題のようです。System.runAsメソッドで実行ユーザを指定できる機能があるのですが、これはテストコード用の設定だし、どうしようーというのがお悩みとのこと。

 

 

 

ちなみにですが、API限定ユーザの設定を見たことがなくて、??となりました。皆様ご存知ですか?

f:id:flect_nakayama_san:20170613163412j:plain

 

どこで設定するかというと、プロファイルの設定欄にありました。Developer Editionの環境を必死で検索したのですが、どうやらエンタープライズ版にしかない設定のようです。(30分は検索した気がします。時間を返して。設定できないなら非表示じゃなくてグレーアウトでもいいじゃない)

f:id:flect_nakayama_san:20170613135546p:plain

StackExchange

How to create an API only user - Salesforce Stack Exchange

 

この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