はじめに
今回の検証のきっかけはこちらの投稿です。 sf.forum.circlace.com
ユーザはLightningでコピーできるのか、機能を試すという意味で興味を持ったのでやってみることにしました。
検証
実現可否の確認
※以下Salesforce URLは https://mydomain.lightning.force.com/... とします。実際に使用する際はURLはご自身の組織URLに読み替えてください。
まず前提として、Lightningでclone
URLパラメータは使えません。
以前業務で必要になってSalesforce社に問い合わせたのですが、「無理」という回答でした。
そのため、Lightningでコピーをするには defaultFieldValues
を用いて必要な項目を1つずつ指定する必要があります。
参考:Salesforceヘルプ:デフォルト項目値を含むレコード作成ページの起動
次に、ユーザ新規作成画面で defaultFieldValues
URLパラメータが使えるかを検証します。
一般的にユーザを新規作成する際は 設定|ユーザ|ユーザ の画面から「新規ユーザ」をクリックしますが、その時のURLは以下のように独特です。
試しにこのURLに defaultFieldValues
URLパラメータを追加したのですが、全く効きませんでした。
次に、先述したブログの「検証 2 カスタムリンクの作成→Lightningの場合」に記載された新規ユーザ画面に注目します。
この画面は https://mydomain.lightning.force.com/lightning/o/User/new にアクセスすれば表示されます。
しかし、この画面にはユーザ作成に必要なプロファイル等の項目が配置されていないので、ユーザを作ろうとしてもエラーになります。
項目がないならページレイアウトで追加すればいいじゃない、ということで該当ページのページレイアウトを探します。
すると、ユーザオブジェクト設定にある「ユーザプロファイルページレイアウト」が該当ページのページレイアウトであることを確認しました。
ここまで確認できれば、このページレイアウトに必要な項目を配置し、 defaultFieldValues
URLパラメータで必要項目を設定すればできるのでは、ということで試してみることにしました。
ユーザコピーを行う
まず、ユーザプロファイルページレイアウトに以下項目を配置します。
- 名前
- 別名
- メール
- ユーザ名
- ニックネーム
- プロファイル
- メールの文字コード
- タイムゾーン
- 地域
- ロール(必須ではない)
- 有効(必須ではない)
- その他必要な項目
なお、ユーザ作成には上記項目の他「言語」項目も必要ですが、ユーザプロファイルページレイアウトにはなぜか配置できません。
そのため、この画面からユーザを作成することはできません。
しかし、defaultFieldValues
URLパラメータで「言語」項目を指定すればユーザ作成できるかもしれません。
次に、このユーザ作成画面にdefaultFieldValues
URLパラメータを使ってアクセスするカスタムリンクを作成します。
作成したカスタムリンクURLは以下になります。
/lightning/o/User/new?defaultFieldValues= FirstName={!URLENCODE(User.FirstName)}, LastName={!URLENCODE(User.LastName)}, Alias={!URLENCODE(User.Alias)}, Email={!URLENCODE(User.Email)}, Username={!URLENCODE(User.Username)}, CommunityNickname={!URLENCODE(User.CommunityNickname)}, ProfileId={!User.ProfileId}, TimeZoneSidKey={!URLENCODE(TEXT(User.TimeZoneSidKey))}, LocaleSidKey={!URLENCODE(TEXT(User.LocaleSidKey))}, LanguageLocaleKey={!URLENCODE(TEXT(User.LanguageLocaleKey))}
ちなみにメールの文字コード(User.EmailEncodingKey)、ロール(User.UserRoleId)はカスタムリンクの差し込み項目として使用できなかったため加えていません。
しかし言語(LanguageLocaleKey)は指定できました。
このリンクをクリックして表示された画面が以下になります。
メールの文字コードはデフォルト値が使用されていました。
そしてこの画面で保存をクリックすると…無事保存できました。
おわりに
今回力技でユーザコピーを試しましたが、以下の理由で実用性がないと考えます。
- カスタムリンクの時点でメールの文字コード、ロールがコピー対象から抜け落ちる。
- マーケティングユーザ等の機能ライセンスを割り当てられない。
- ユーザ設定画面から作成した場合には使える「パスワードをリセットしてユーザに通知する」が使えない。
個人的にはユーザをコピーするならデータローダを使うと思います。
理由は上記欠点のうち「パスワードをリセットしてユーザに通知する」が使えない点以外に対応できること、また複数コピーが同時にできるためです。