Mark Hammer's Blog

SalesforceやTrailheadに関する情報を投稿しているブログです。

Lightningレコードページのレポートグラフコンポーネントの動作はレポートグラフと異なる

Lightningレコードページには、レポートから生成可能なグラフを配置できるレポートグラフコンポーネントがあります。
これを使えばレポート画面で作成したグラフをそのまま配置可能…と思っていましたが、「行をグループ化」を指定した場合に以下の動作の違いがありました。

  • レポート画面で配置可能なグラフ
    • 「行をグループ化」で指定した項目であればどの項目であっても軸として使用可能
  • レポートグラフコンポーネント
    • 「行をグループ化」で指定した項目のうち、最上位の項目のみ軸として使用可能

具体的な動作を以下例で表してみます。

例として、「自取引先を親取引先として持つ各取引先の商談金額合計をレコードページでグラフ表示したい」という要望があったとします。
まず、レポートの「行をグループ化」に「親取引先>取引先名」と設定すると、レポートページのグラフでは期待通りのグラフが作成できます。

「親取引先>取引先名」でグループ化したレポートとグラフ

期待通りのグラフをレポートページで作成できたので、これをLightningレコードページのレポートグラフコンポーネントを使用して親取引先レコードページに表示させようとします。
すると、以下のようにレポートページと異なり、Y軸には親取引先の1つしか表示されません。

「親取引先>取引先名」でグループ化したレポートを用いたレポートグラフコンポーネント

次に、レポートの「行をグループ化」に「取引先名」と設定します。
これでもレポートページのグラフで期待通りのグラフが作成できます。

「取引先名」でグループ化したレポートとグラフ
これを先ほどと同様にLightningレコードページのレポートグラフコンポーネントを使用して親取引先レコードページに表示させると、今度は期待通りレポートページのグラフと同様、Y軸には子取引先が表示されました。
「取引先名」でグループ化したレポートを用いたレポートグラフコンポーネント

Admin Configuration Kit: Security and Visibility を和訳してみた

2022/2にSalesforce blogにてシステム管理者向けのセキュリティ&データ参照・編集に関するイメージ図(英語版)が公開されました。

admin.salesforce.com

ここでは、イメージ図の日本語版、及び備考を記載していきます。

セキュリティ&データ参照・編集に関する設定の全体像

説明文の日本語要約

  • 対象製品:Sales Cloud, Service Cloud, Salesforce Platform
  • 対象機能:ログインセキュリティ、オブジェクト権限と項目レベルアクセス、レコードアクセス
  • 対象外機能:ゲストユーザ、テリトリー管理

Salesforce 組織内の新規ユーザのセキュリティとレコードアクセスに関する設定を設計および構成します。

  • まず、要件を収集します。
  • その後、各ページでベストプラクティスの図と段階的な構成フローを確認します。

この資料はヘルプに代わるものではありません。

ユーザログインの流れ

説明文の日本語要約

  • ベストプラクティス
    • MFAを有効にします。
    • ログインIPアドレスの制限、ログイン時間帯の制限、セッションタイムアウトの設定は、現時点ではプロファイルによってのみ割り当てることができます。
    • 可能な限り、権限セットと権限セットグループを使用してください。

この資料はヘルプに代わるものではありません。

セキュリティ設定決めの流れ

説明文の日本語要約

図の設定フローに従って、あなたの組織のユーザにとって最適なログイン・セキュリティ設定を決定してください。

  • ベストプラクティス
    • ユーザの業務に必要な最小限のアクセス権を付与します。
    • MFAを有効にします。
    • ログインIPアドレスの制限、ログイン時間帯の制限、セッションタイムアウトの設定は、現時点ではプロファイルによってのみ割り当てることができます。
    • 可能な限り、権限セットと権限セットグループを使用してください。

この資料はヘルプに代わるものではありません。

オブジェクト単位の参照・編集・削除・作成権限決めの流れ

説明文の日本語要約

図の設定フローに従って、どのようなオブジェクトレベルのアクセス権限がユーザにとって最適であるかを決定してください。

  • ベストプラクティス
    • ユーザの業務に必要な最小限のアクセス権を付与します。
    • 可能な限り、「すべて表示」、「すべて変更」のアクセス権限を付与しないようにします。
    • 可能な限り、権限セットと権限セットグループを使用してください。

この資料はヘルプに代わるものではありません。

項目単位の参照・編集権限決めの流れ

説明文の日本語要約

図の設定フローに従って、ユーザにとって最適な項目レベルアクセス権限の設定を決定してください。

  • ベストプラクティス
    • ユーザが仕事をするために必要な最小限のアクセス権を付与します。
    • ある項目を必須とする場合としない場合両方存在するときは、ページレイアウトでその項目を必須とするか、入力規則を設定することを検討してください。
    • 項目を完全に必須にするには、カスタム項目の作成時または編集時に「必須項目」チェックボックスにチェックを入れます。
    • 可能な限り、権限セットと権限セットグループを使用して権限を割り当ててください。

この資料はヘルプに代わるものではありません。

オブジェクト単位の組織の共有設定決めの流れ

説明文の日本語要約

図の設定フローに従って、組織の共有設定がユーザにとって最適であることを判断してください。

  • ベストプラクティス
    • 組織の共有設定は、可能な限り制限されるべきです。
      「レコード単位の共有設定決めの流れ」のロール階層、共有ルール、手動共有を使用して、レコードアクセスの対象を拡張することができます。
    • 共有はSandboxで構成し、本番環境に導入する前に十分にテストする必要があります。
    • 本番環境でのレコードアクセスの変更は、大規模な操作となるため、営業時間外に行う必要があります。
      共有が再計算されるまでは、Salesforceにアクセスさせないようにすることを検討してください。

この資料はヘルプに代わるものではありません。

レコード単位の共有設定決めの流れ

説明文の日本語要約

図の設定フローに従って、どのような共有機能がユーザにとって最適かを判断してください。

  • ベストプラクティス
    • 複数の共有機能によって1つのレコードに異なるレベルのアクセス権限が与えられる場合、そのユーザは最も範囲の広いアクセス権限を受け取ります。
      • 例:組織の共有設定で「公開/参照のみ」、共有ルールで「参照・更新」の場合は範囲の広い「参照・更新」が適用されます。
    • 共有機能はサンドボックスで設定し、本番環境に導入する前に十分にテストする必要があります。
    • 本番環境でのレコードアクセスの変更は、大規模な操作となるため、営業時間外に行う必要があります。
      共有が再計算されるまでは、Salesforceにアクセスさせないようにすることを検討してください。

この資料はヘルプに代わるものではありません。

パスワード有効期限切れ時のLightning Login動作、そしてパスワード有効期限切れ時の動作を確認する方法。

はじめに

以前、某所にて「パスワード入力が不要なLightning Loginにて、Salesforceのパスワード有効期限が切れた場合どうなるのか」という質問がありました。
シングルサインオンでログインするユーザの場合、Salesforce側のパスワード有効期限は無視される(参考ヘルプ)ことは知っていましたが、Lightning LoginはSalesforceで完結するため、確かに「どうなるんだろう」と思い、調べてみました。

パスワード有効期限切れ時の動作を確認する方法

検証しようとはいっても、パスワードの有効期限は手で書き換えられないので待たないと無理では…?と思ってしまいがちです。
しかし、Salesforceにはパスワードの有効期限残によらず全ユーザのパスワード有効期限を即期限切れとする機能があります。 それが設定項目にある「すべてのユーザのパスワードをリセット」になります。

[すべてのユーザのパスワードをリセット]前
[すべてのユーザのパスワードをリセット]後

実際のパスワード有効期限切れ時のLightning Loginの動作

実際の動作は以下でした。

  1. ログイン画面にてLightning Loginでログインする。
  2. ログインは成功するが、パスワード変更画面が表示される。
    このパスワード変更画面では現在のパスワードは入力不要のため新しいパスワードのみ入力して保存する。
    パスワード変更画面
  3. Salesforceログイン後の画面(通常はホーム画面)が表示される。

普段からLightning Loginを使用している場合、パスワード入力不要のため「パスワードを忘れた」となりがちですが、これだと安心ですね。

続きを読む

WebassessorログインIDの変更方法

はじめに

Salesforce認定資格試験を受験するためには必ずWebassessorのアカウントを取得する必要があります。
アカウント新規作成の際は当然ログインIDを設定する必要があるのですが、このログインID、登録後のプロファイル画面では変更不可となっています。
しかもSalesforce認定資格試験FAQでは「Webassessor ログインIDは変更できない仕様となっております。」となっており、変更依頼も不可とされていました。

FAQ抜粋

ログインIDは現在(6文字以上の半角英数字以外に)特に制限はないのですが、私がWebassessorアカウントを作成したときは会社のメールアドレスをログインIDに設定していたので、当時の会社のメールアドレスをずっとログインIDとしていました。
あくまでログインIDであって、試験予約、試験結果等が通知されるメールアドレスはプロファイル画面から変更可能なので昔の会社のメールアドレスであっても特に問題はないのですが、「変えられるなら変えたいなぁ…」とはずっと思っていました。

そんな時、Twitterにて以下情報が入ってきました。

これを参考にログインID変更申請を行ってみると、確かに変更できたので手順を残しておきます。

手順

なお、以後の操作、Trailhead Helpとの連絡は英語でした。

ケース作成

  1. Trailheadにログイン
  2. Trailhead Helpにアクセス
  3. 画面右下の「Submit a New Case」をクリック(表示まで時間がかかるのでしばらく待つ)
  4. Contact Trailhead Help 画面で「Certification」をクリック
  5. 次画面でStep2: Select Topicに"Trailhead/Certification Account"、Step3: Select Reasonに"Certification Webassessor Account, Password Reset, or Login Issue"を選択して「Log a ticket」をクリック
  6. Case作成画面で以下図を参考に入力し、「Submit to Trailhead」をクリック

以後はCase作成画面に表示されているメールアドレス宛に通知が届きます。
このメールアドレスはWebassessorに設定しているメールアドレスと別でも問題ありません。

Trailhead Helpとの連絡

ケース作成後、本人確認のためにWebassessor上の情報を入力するよう依頼が届きます。 私の場合は以下でした。

  • What is the company name tied to your Webassessor account?
    • Webassessorプロファイルの「会社名」
  • What is your full physical street address, including the city, state/province, and postal code?
    • Webassessorプロファイルの「住所1」「住所2」「都道府県」「県」「郵便番号」「国」を繋げて住所を入力する
  • What is the full name of the last exam you took, or the full name of the exam you are currently registered for?
    • 直近受験したSalesforce資格試験、または現在予約中のSalesforce資格試験の正式名
    • 資格試験の英語名はこちらが参考になります。
  • What is the phone number associated with your Webassessor account?
    • Webassessorプロファイルの「主たる電話番号」

ちなみに「主たる電話番号」は必須ではないので記載していなかったのですが、依頼が来た後に電話番号を設定して返信しても問題ありませんでした。
また連絡が英語である以上、会社名、住所等に日本語を記載している場合は英語に変えた方がいい気がします。(私は元から英語表記なのでそのままでした。)

返信はTrailhead Helpにアクセスすると、右下の「My Cases」に作成したケースが現れるので、そこをクリックして行います。
ちなみに返信は改行できませんでしたが、問題ありませんでした。

上記情報に問題がなければ、翌営業日にWebassessorログインIDを変更した旨連絡が届きます。
以後旧ログインIDではログインできないのでご注意ください。

フローのリソース: 選択肢で入力したテキストを取り出す方法

はじめに

Twitterを見ていたときに、この投稿を見つけました。

疑問に思って調べたところ、結構面倒な動作だったのでここにまとめます。

フロー設定と動作

まず、画面フローにて画面コンポーネントに選択リストを配置します。

この時、「OTHER」選択肢は「その他」を表示し、さらに「テキスト入力を表示」を有効にしてテキスト入力可能にします。

最後に、選択リスト画面で「完了」を押すと入力値が表示されるようにします。

実際にデバッグで動かしてみます。

すると、{!OTHER}では選択肢の「その他」が表示され、入力テキストは取得できませんでした。
また、その他に入力テキストが取得できそうなリソースも見当たりませんでした。

入力テキストを取り出す方法

参考資料によれば、「選択肢リソースをテキスト変数のデフォルト値に設定すると入力テキストが取得できる」とのことなので、{!OTHER}をデフォルト値とするテキスト変数var_inputTextを設定します。

そして、最後の入力値表示画面に{!var_inputText}を追加します。

すると、{!OTHER}では選択肢の「その他」が、{!var_inputText}では入力値の「テスト入力」が取得できました。

ここで、試しにテキスト変数var_inputTextからデフォルト値を外し、選択リスト画面と入力値表示画面の間にvar_inputText{OTHER}の値を割り当てる要素を追加します。

この方法でも{!var_inputText}で入力値の「テスト入力」が取得できました。

おわりに

できるにはできたのですが、確認した範囲ではヘルプにも記載がなく、トライアンドエラーでしか方法を特定できないと思います。
選択肢リソースで選択肢と入力テキストの両方を取得できないのであれば、個人的には選択肢リソースにて「テキスト入力を表示」を有効にした場合にそのテキストを保存するための変数を指定する項目を追加するのがベターだったのではないかと思いました。

参考資料

Trailblazer Community: How to get the value for screen flow 'Choice' option 'Display text input'?

Visual Flow Choices and Using “Show Input on Selection” | Explorations Into Salesforce

キャンペーンメンバーの状況を新規作成時にカスタマイズ済みにしたい

はじめに

キャンペーンでは参加者をキャンペーンメンバーとして登録しますが、キャンペーンメンバーの「メンバーの状況」項目は、初期状態では「送信」と「レスポンスあり」で固定となっており、カスタマイズができません。
これは、通常選択リスト項目で選べる値は項目に設定している値及びレコードタイプ設定で決定しますが、キャンペーンメンバーの「メンバーの状況」項目はそのキャンペーンに紐づく「キャンペーンメンバーの状況」オブジェクト内のレコードで決定する動作が原因と思われます。
この動作により、通常選択リスト項目の値はレコードタイプ単位で決まるため「同じレコードタイプでレコード毎に別の値を使いたい」という要望は叶いませんが、キャンペーンの「メンバーの状況」に限り「レコード毎に別の値を使いたい」という要望が実現できます。
ただし、「初期値をカスタマイズしたい」という要望が実現不可となっており、IdeaExchangeでも「修正予定なし」となっています。

IdeaExchange: Customizable Campaign Member Status Values picklist

Update from Salesforce
(中略)
We don't plan to address this immediately on the roadmap, but we'll continue to re-evaluate our priorities to see if we can fit this in.

ということで、ここでは「初期値をカスタマイズしたい」という要望を何とかして実現してみます。

前提

ここではキャンペーン作成時に「メンバーの状況」項目が以下から選べるようになっているようにします。

  • 連絡予定:デフォルト
  • 連絡済み
  • 出席予定:レスポンスあり
  • 欠席予定:レスポンスあり

また、初期値の「送信」、「レスポンスあり」は不要なので削除します。

解決方法1

テンプレートとなるキャンペーンを作り、それをコピーする。

概要

  • テンプレートとなるキャンペーンを作成し、「メンバーの状況」をカスタマイズする。
  • UIから「新規」ボタンを外し、代わりに「テンプレートを『関連情報と共にコピー』するボタン」を配置する。

実装手順

  1. キャンペーンページレイアウトに「キャンペーンメンバーの状況」関連リストを表示する。
  2. テンプレートとなるキャンペーンを作成する。この時レコードIDをコピーする。
  3. テンプレートとなるキャンペーンの「キャンペーンメンバーの状況」関連リストで、前提節の通り状況の追加、削除を行う。
  4. キャンペーンにカスタムボタンを作成する。カスタムボタンのURLは以下とする。
    /lightning/r/Campaign/[テンプレートのレコードID]/clone?useRecordTypeCheck=0&cloneRelatedEntities=%7B%22CampaignMemberStatuses%22%3A%7B%7D%7D
  5. キャンペーンオブジェクト設定の「リストビューボタンレイアウト」から「リストビュー」にて標準ボタンから「新規」ボタンのチェックを外し、カスタムボタンにて4.で作成したカスタムボタンを選択する。
  6. 以後、5.で設置したカスタムボタンをクリックすることでテンプレートのコピー作成画面が表示され、「キャンペーンメンバーの状況」がテンプレートと同じレコードが作成される。

作業完了後はキャンペーンページレイアウトから「キャンペーンメンバーの状況」関連リストを外してもOKです。

メリット

  • 「メンバーの状況」を再カスタマイズしたい場合、テンプレートを編集すればいいのでフローより楽。

デメリット

  • 新規作成時、キャンペーン名にテンプレートとなるキャンペーン名が入るので、都度消して入力する手間が発生する。
  • 誤ってテンプレートキャンペーンを削除するとカスタムボタン押下時にエラーになる。
  • データローダでのキャンペーンインポート時には「メンバーの状況」がカスタマイズされない。
  • Sandboxを作成した場合、Sandboxへのキャンペーンテンプレート作成及びカスタムボタンURLの変更を行わないとキャンペーンが作成できない。

解決方法2

フローでキャンペーン作成時にキャンペーンメンバーの状況オブジェクトに手を加える。

概要

  • フローでキャンペーン作成時に「キャンペーンメンバーの状況」オブジェクトのレコードを作成、削除する。

実装手順

別サイトに手順を記載しましたのでご参考ください。

zenn.dev

メリット

  • 「新規」ボタンのカスタムボタン差し替えなど、UIへの変更が不要。
  • テンプレート不要のため、誤削除を気にする必要がない。
  • データローダでのキャンペーンインポート時にも「メンバーの状況」がカスタマイズされる。
  • Sandbox作成時も特に対応せず状況カスタマイズ済みのキャンペーンが作成される。

デメリット

  • 「メンバーの状況」を再カスタマイズしたい場合の修正箇所を理解するには、フローの設計思想を理解する必要がある。

おわりに

現状、「メンバーの状況」の初期状態を書き換えたいという要望を実現するのが結構面倒だという印象を受けました。
冒頭に書いた通りIdeaExchangeでもこの動作を修正する予定はないとのことですが、もう少し何とかならないか…と思います。

参考資料

sf.forum.circlace.com

www.youtube.com

Field Service コンサルタント試験勉強用資料

この度、5/29にField Serviceコンサルタント合格しました。

ここでは勉強に使用した資料を書いていきます。

Field Service用パッケージ、組織

Salesforceの試験勉強では実際に触ることが重要です。
Trailheadのモジュールにて、Developer Editionにインストールできるパッケージと期間限定ながら即Field Serviceが利用可能な組織の情報がありました。

Trailhead

資格対策用Trailmix

Field Serviceのモジュール及びヘルプをまとめている公式Trailmixです。

trailhead.salesforce.com

主要Trail

Field ServiceのモジュールをまとめているTrailです。

trailhead.salesforce.com
trailhead.salesforce.com
trailhead.salesforce.com

Field Serviceで用いるオブジェクト一覧、モデル

Field Serviceでは作業指示、サービス予定のようなField Service専用のオブジェクトがあるため、Service Cloudに出てくる標準オブジェクトの知識だけでは足りません。
Field Service専用のオブジェクトについても知る必要があります。

Field Service関連権限セット・ライセンス情報

Field Serviceへのアクセスは専用の権限セットが必要となりますので、権限セットの前提となるライセンスについても知る必要があります。
ただExperience Cloudほどは重要度は高くありません。

パートナー向け資料

この資格はほぼパートナー向けだと思いますが、パートナーのみアクセス可能なパートナーコミュニティでは、「Salesforce Field Service 合格体験記 & 機能ワンポイント解説」のWebinar動画と資料が公開されています。
https://partners.salesforce.com/0D54V00005VMgio

特に機能ワンポイント解説の部分は試験カテゴリに沿った内容になっているので、入手できたら読むことをおすすめします。

(この資料はパートナーのみアクセス可能なため、私に直接連絡いただいても提供しません。ご了承ください。)

Trailhead モジュール:Field Service Mobile

※この内容は2022/5時点のものです。

Access Your Office on Your Phone

https://trailhead.salesforce.com/ja/content/learn/modules/field-service-mobile/access-your-office-on-your-phone

  • 説明:英語
  • Challenge:英語選択問題

Set Up a Mobile Worker

https://trailhead.salesforce.com/ja/content/learn/modules/field-service-mobile/set-up-a-mobile-worker

  • 説明:英語
  • Challenge:英語選択問題

Customize User Settings

https://trailhead.salesforce.com/ja/content/learn/modules/field-service-mobile/customize-user-settings

  • 説明:英語
  • Challenge:英語ハンズオン

Challenge要約

事前作業:Field Serviceのパッケージインストールとサンプルデータ入りのDeveloper Edition組織のサインアップとTrailheadへの紐づけを行ってください。

  • サービス予定オブジェクトに以下の通りクイックアクションを追加してください。
    • ページレイアウト:FSL Service Appointment Layout
    • クイックアクション:メール(名前:ServiceAppointment.SendEmail)

Work From Anywhere

https://trailhead.salesforce.com/ja/content/learn/modules/field-service-mobile/work-from-anywhere

  • 説明:英語
  • Challenge:英語選択問題

Trailhead モジュール:Field Service Scheduling

※この内容は2022/5時点のものです。

Explore Scheduling

https://trailhead.salesforce.com/ja/content/learn/modules/field-service-lightning-scheduling-basics/explore-scheduling

  • 説明:英語
  • Challenge:英語選択問題

Examine Scheduling Policies

https://trailhead.salesforce.com/ja/content/learn/modules/field-service-lightning-scheduling-basics/examine-scheduling-policies

  • 説明:英語
  • Challenge:英語選択問題

Customize a Scheduling Policy

https://trailhead.salesforce.com/ja/content/learn/modules/field-service-lightning-scheduling-basics/customize-a-scheduling-policy

  • 説明:英語
  • Challenge:英語ハンズオン

Challenge要約

事前作業:2番目のユニット(Customize a Scheduling Policy)の説明通り、Field Serviceのパッケージインストールとサンプルデータ入りのDeveloper Edition組織のサインアップとTrailheadへの紐づけを行ってください。

  • 以下の通りスケジュールポリシーを作成してください。
    • 名前:Customer Satisfaction
    • 作業ルールに以下のルールのみ設定してください。
      • Active Resources
      • Due Date
      • Earliest Start Permitted
      • Excluded Resources
      • Match Territory
      • Resource Availability
    • サービス内容にて以下の通り設定してください。
      • ASAP: 2
      • Minimize Travel: 5

Update a Schedule https://trailhead.salesforce.com/ja/content/learn/modules/field-service-lightning-scheduling-basics/update-a-schedule - 説明:英語 - Challenge:英語ハンズオン

Challenge要約

筆者注:前のユニットで使用した組織を継続して使用することをお勧めします。(作業指示番号:00000173のレコードが既に存在するため)

  • 予定の予約を取得してください。
    • 対象の作業指示番号:00000173
    • 予約のための時間スロットを選んでください。(これは確認しません。)
    • ヒント:空き時間枠を見つけるには、[日付の延長]を複数回クリックする必要がある場合があります。

Trailhead モジュール:Dispatcher Console for Admins

※この内容は2022/5時点のものです。

Set Up the Dispatcher Console

https://trailhead.salesforce.com/ja/content/learn/modules/dispatcher-console-for-admins/set-up-the-dispatcher-console

  • 説明:英語
  • Challenge:英語選択問題

Customize Dispatcher Console Settings

https://trailhead.salesforce.com/ja/content/learn/modules/dispatcher-console-for-admins/customize-dispatcher-console-settings

  • 説明:英語
  • Challenge:英語ハンズオン

Challenge要約

事前作業:Field Serviceのパッケージインストールとサンプルデータ入りのDeveloper Edition組織のサインアップとTrailheadへの紐づけを行ってください。

  • 以下の通り、項目セットから項目を削除してください。
    • オブジェクト:サービスリソース
    • 項目セット:Resource Lightbox
    • 削除対象項目:Gantt Label
  • ガントチャートを更新して、変更が反映されたか確認してください。

Add Custom Filters and Icons

https://trailhead.salesforce.com/ja/content/learn/modules/dispatcher-console-for-admins/add-custom-filters-and-icons

  • 説明:英語
  • Challenge:英語ハンズオン

Challenge要約

事前作業:Field Serviceのパッケージインストールとサンプルデータ入りのDeveloper Edition組織のサインアップとTrailheadへの紐づけを行ってください。
前のユニットで使用した組織を引き続き使用できます。

  • 以下の通り検索条件を作成してください。
    • 名前:Short Jobs
    • 説明:Show jobs shorter than 2 hours
    • データ選択:予定を表示 3 日 - 対象期間および次の条件までの日数 3 日経過
    • 追加条件1:
      • 項目:所要時間
      • 演算子:<
      • 値:2
    • 追加条件2:
      • 項目:状況
      • 演算子:次の文字列を含まない
      • 値:Completed
    • すべてのユーザがこの検索条件を使用できるようにします:チェックを入れる

Add a Custom Action

https://trailhead.salesforce.com/ja/content/learn/modules/dispatcher-console-for-admins/add-a-custom-action

  • 説明:英語
  • Challenge:英語ハンズオン

Challenge要約

事前作業:Field Serviceのパッケージインストールとサンプルデータ入りのDeveloper Edition組織のサインアップとTrailheadへの紐づけを行ってください。
前のユニットで使用した組織を引き続き使用できます。

  • 以下のサンプルコードを使ってApexクラス:copyAbsenceToNextDay を作成してください。
global class copyAbsenceToNextDay implements FSL.CustomGanttResourceAbsenceAction {
    global String action(Id absenceId, String absenceType, Datetime ganttStartDate, Datetime ganttEndDate, Map<String, Object> additionalParameters) {
        ResourceAbsence resourceAbsence = [SELECT Id, AbsenceNumber, Start, End, ResourceId, RecordTypeId, FSL__Approved__c FROM ResourceAbsence WHERE Id =: absenceId LIMIT 1];
        ResourceAbsence raClone = resourceAbsence.clone(false, true, false, false);
        raClone.Start = resourceAbsence.Start.addDays(1);
        raClone.End = resourceAbsence.End.addDays(1);
        raClone.ResourceId = resourceAbsence.ResourceId;
    raClone.RecordTypeId = resourceAbsence.RecordTypeId;
        raClone.FSL__Approved__c = true;
        insert raClone;
        return 'Resource Absence successfully copied.';
    }
}
  • 以下の通りカスタム権限を作成してください。
    • 表示ラベル:copyAbsenceToNextDay
    • 名前:copy_absence_to_next_day
  • Lead Dispatcher権限セットを作成し、自分のユーザに割り当ててください。
  • カスタム権限:copyAbsenceToNextDay をLead Dispatcher権限セットに割り当ててください。
  • ガントチャートに以下の通りカスタムアクションを追加してください。
    • Action Category: Non-Availabilities
    • Label in Dispatcher Console: Copy Absence to Next Day
    • Action Type: Apex Class
    • Apex Class: copyAbsenceToNextDay
    • Required Custom Permission: 「copyAbsenceToNextDay」を選択