tamuです。

スクラッチ組織でカスタムオブジェクトを作っていきます。


スクラッチ組織にログイン

スクラッチ組織は通常のログイン画面からはそのままでは入れません。 まずはコマンドで入ることになります。

まず、接続している組織一覧を表示します。

1
2
3
4
5
6
7
8
9
$ sfdx force:org:list
=== Orgs
     ALIAS  USERNAME                   ORG ID              CONNECTED STATUS
───  ─────  ─────────────────────────  ──────────────────  ────────────────
(U)         xxxxxxxxxxxxxxx@xxxxxxxxx  xxxxxxxxxxxxxxxxxx  Connected

  ALIAS   USERNAME                       ORG ID              EXPIRATION DATE
  ──────  ─────────────────────────────  ──────────────────  ───────────────
  mywork  xxxxxxxxxxxxxxxxx@example.com  xxxxxxxxxxxxxxxxxx  2021-07-15

下がスクラッチ組織になるので、alias, USERNAME, ORG ID どれかを指定して開きます。

1
$ sfdx force:org:open -u mywork

コマンドを実行するとブラウザが立ち上がり、スクラッチ組織にログインした状態になります。

スクラッチ組織にログインした直後の画面


カスタムオブジェクトの作成

あとは普通にオブジェクトマネージャからカスタムオブジェクトを作成します。

カスタムオブジェクトを作る


今回はコールリストを管理するオブジェクトを作ってみます。

コールリストオブジェクトを作る



できました。

完成したコールリストオブジェクト


カスタムオブジェクト定義の取得

GUIで作ったカスタムオブジェクト定義をメタ情報としてXMLの形式でダウンロードします。 こうすることでGitHubなどで管理することができます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$ sfdx force:source:retrieve -u mywork -m "CustomObject:CallList__c"
=== Retrieved Source
FULL NAME                  TYPE          PROJECT PATH
─────────────────────────  ────────────  ──────────────────────────────────────────────────────────────────────────────
CallList__c                CustomObject  force-app/main/default/objects/CallList__c/CallList__c.object-meta.xml
CallList__c.CallResult__c  CustomField   force-app/main/default/objects/CallList__c/fields/CallResult__c.field-meta.xml
CallList__c.Contact__c     CustomField   force-app/main/default/objects/CallList__c/fields/Contact__c.field-meta.xml
CallList__c.Lead__c        CustomField   force-app/main/default/objects/CallList__c/fields/Lead__c.field-meta.xml
CallList__c.Tel__c         CustomField   force-app/main/default/objects/CallList__c/fields/Tel__c.field-meta.xml
CallList__c.WorkDay__c     CustomField   force-app/main/default/objects/CallList__c/fields/WorkDay__c.field-meta.xml


その他の必要な作業

このカスタムオブジェクトを他のスクラッチ組織にデプロイすると、項目レベルセキュリティで見えるようにする設定が必要になります。 すべての項目を手で設定していくのは面倒なので、権限セットでオブジェクトに対するアクセス権限を付与するようにします。


下の図は別のスクラッチ組織にpushしたときの項目レベルセキュリティです。

別組織にpushしたときのFLS


みごとに参照権限がついていません。


権限セットの作成

権限セットを用意して

権限セットの作成


設定します。

権限セットの設定


権限セットの取得

コマンドでスクラッチ組織から設定した権限セットを取得します。

1
2
3
4
5
$ sfdx force:source:retrieve -u mywork -m "PermissionSet:CallListUserPermission"
=== Retrieved Source
FULL NAME               TYPE           PROJECT PATH
──────────────────────  ─────────────  ───────────────────────────────────────────────────────────────────────────────────
CallListUserPermission  PermissionSet  force-app/main/default/permissionsets/CallListUserPermission.permissionset-meta.xml


権限セットの割り当て

権限セットを割り当てるには、まずスクラッチ組織に権限セットをpushする必要があります。

1
2
3
4
5
6
7
8
$ sfdx force:source:push -u mywork2
*** Deploying with REST ***
Job ID | 0Af1m00000Jo0EDCAZ
SOURCE PROGRESS | ████████████████████████████████████████ | 1/1 Components
=== Pushed Source
STATE  FULL NAME               TYPE           PROJECT PATH
─────  ──────────────────────  ─────────────  ───────────────────────────────────────────────────────────────────────────────────
Add    CallListUserPermission  PermissionSet  force-app/main/default/permissionsets/CallListUserPermission.permissionset-meta.xml

これで、mywork2 スクラッチ組織に権限セットがpushされました。

これを以下のコマンドでユーザに割り当てます。 (ユーザ名は force:org:list などでわかります)

1
2
3
4
5
$ sfdx force:user:permset:assign --permsetname CallListUserPermission --targetusername test-xxxxxxxxxxxx@example.com
=== Permsets Assigned
Username                       Permission Set Assignment
─────────────────────────────  ─────────────────────────
test-xxxxxxxxxxxx@example.com  CallListUserPermission


無事に権限セットが割り当てられました。

権限セット