共有カレンダーからイベントを自動共有する


[Auto Share Events from a Shared Calendar](https://automationchampion.com/2022/04/16/auto-share-events-from-a-shared-calendar-4/)

# 大きなアイデアまたは永続的な質問:

+ WhatId と WhoId の両方が null の場合、共有カレンダーからイベントを自動的に共有するにはどうすればよいですか? 

カレンダは、会議に間に合うようにするだけではありません。プロジェクトやイベントの資料や知識の中心的な場所となり、ベスト プラクティスを伝え、企業の管理を支援することさえできます。ユーザー、グループ、ロール内のすべてのユーザー、またはロールとその部下とカレンダーを共有することで、Salesforce のカレンダーへのアクセスを許可できます。カレンダーを共有する相手と共有方法を選択できます。まずは下地作りをしましょう。 

# 前提条件:

Louis Brooksは、Gurukul on Cloud (GoC) で営業担当者として働いています。Louis は、GoC の別の営業担当であるCaroline Bellに、彼女のカレンダーへのフル アクセスを許可しました。 以下の手順を (Salesforce Classic で) 実行して、個人のカレンダーを共有します。

1. 名前 |をクリックします。マイ設定 | カレンダーとリマインダー | カレンダーの共有。 
2. [追加] ボタンをクリックして、カレンダーを他のユーザーと共有します。
3. ユーザーCaroline Bellを選択し、[追加]矢印をクリックして、 Caroline の名前を [使用可能] 列から [共有先] 列に移動します。
4. [カレンダー アクセス]ドロップダウンを使用して、カレンダーの共有方法を選択します。この場合、次のスクリーンショットに示すように、Full Accessを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/75ac0907-9777-deda-0bf8-6b69dfaf8d6a.png)

5. 完了したら、[保存] ボタンをクリックします。

これ以降、  Louis Brooksがイベントを作成すると、自動的に Caroline Bell と共有されます。 

# ビジネスユースケース

Donna Serdula は、Gurukul on Cloud (GoC) でシステム管理者として働いています。 Louis Brooks は、Donna が作成したイベント (イベントの詳細については、次の図を参照してください) がユーザーの Caroline Bell に表示されないというケースを Donna に割り当てました。

1. イベント作成者 – Louis Brooks

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/b0fc8015-41c9-90e8-48f7-b5e599ca9257.png)

2\. イベント詳細 キャロラインシー
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/9e15e6f6-5c5a-a726-6f58-8c44210f68fe.png)

3\. 受信したエラー メッセージ – Caroline
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/a2c7e2db-5a78-b4c3-b5fd-012846ea5b7c.png)

Awesome Admin の Donna が問題を特定しました。 Donna は Web を検索し、共有カレンダーからイベントを表示または編集できないのはなぜですか?に関する興味深い記事を見つけました 。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/a51292fc-fb59-1bf3-7892-0edfe5fbde65.png)


まず、ポイント 3 (前のスクリーンショットを参照) に集中してから、画像を参照してください。前述の問題を解決するための Donna の調査結果: Louis Brooksは Caroline Bellにカレンダーへのフル アクセスを許可しましたが、 Carolineはカレンダーでイベントを表示できましたが、 Louisがデータを入力していなかったため、イベントの詳細ページにアクセスできませ んでした。関連先および/または名前フィールド。

# オートメーション チャンピオン アプローチ (I-do):

上記の問題には複数の解決策が考えられます。 

これらすべての人にシステム管理者アクセス権を付与することで、このニーズを解決できます。良い解決策ではありません。
Salesforce フローを使用して、これらのフィールドが両方とも null であるイベントを見つけ、この特定の目的のために作成できる連絡先レコードで name(WhoId) フィールドを更新します。
それを解決するための2番目のアプローチに従います。ここで一時停止して、[既知の問題](https://success.salesforce.com/issues_view?id=a1p30000000Su0FAAS)をお読みください 

これは、 ユーザが複数の取引先責任者を ToDo および行動に関連付けることを許可する機能が組織で有効になっている 場合を意味します。

>イベントまたはタスクの who_id フィールドを変更しようとするトリガー、または関連する連絡先を表すイベントまたはタスクの関係を追加または削除しようとするトリガーは、UI 保存中にトリガーが起動されたときに、正しく保存されないか、まったく保存されない場合があります。UI で設定された whoId または関連する連絡先の値は、トリガーによって設定された値よりも優先されます。

つまり、このような場合、Apex トリガーまたは Salesforce フローを介し て名前( WhoId ) 項目を更新することはできません 。

上記のビジネス要件を解決するために、関連先 (取引先レコードを指す) フィールドを更新します。このソリューションは、 ユーザーが複数の取引先責任者を ToDo および行動に関連付けることを許可する機能が有効になっているかどうかに関係なく、すべてのユーザーに対して機能します。 

+ 次の記事では、 ユーザーが複数の取引先責任者を ToDo および 行動に関連付けることを許可する機能が有効になっているときに、名前 ( WhoId ) 項目を更新する方法を紹介します ([ブログ 131](http://wp.me/p1wpoE-2Cj) )  。

この要件を解決するために、 After-save Record-Triggered Flowを使用します。[この記事をチェック](https://automationchampion.com/2020/12/15/getting-started-with-lightning-flow-part-35-when-to-use-before-save-vs-after-save-record-triggered-flows/)して 、このシナリオで保存後のレコード トリガー フローを使用している理由を理解してください。 

さらに掘り下げる前に、フローの概要図もお見せしましょう。次のフロー ダイアグラムに数分かけて理解してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/d8bfa542-eaa6-5be3-d948-5927462706f9.png)

この自動化プロセスの構築を始めましょう。

# ガイド付き練習 (私たちが行います):

After-Save Record-Triggered Flowを使用してDonna のビジネス要件を 解決するには、2 つのステップがあります。我々はしなければならない： 

+ アカウントを作成する 
+ Salesforce フローの手順

1. レコード トリガー フローのフロー プロパティを定義する
2. WhoId と WhatId の両方が Null かどうかを確認する決定要素を追加します。
3. レコードの取得要素を追加して、イベント レコードの共有アカウントを見つけます。
4. アカウントが見つかったかどうかを確認する決定要素を追加します 
5. 代入要素を追加して whatId を更新する

# ステップ 1: アカウントの作成

1. Sharing event recordsという名前のアカウントを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/bea8a1d8-513c-ce91-0f6b-8852f2fe5d8f.png)

# ステップ 2.1: フロー プロパティの定義

1. [セットアップ]をクリックします。
2. [クイック検索] ボックスに「Flows 」と入力します。
3. Flowsを選択し、 New Flowをクリックします。
4. [レコード トリガー フロー ] オプションを選択し、[作成] をクリックして、次のようにフローを構成します。

+ オブジェクト: イベント
+ フローをトリガーするタイミング: レコードが作成または更新されたとき
+ エントリー基準の設定
+ 条件の要件:なし
+ 迅速なフィールド更新のためにフローを最適化する

5\. [完了]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/b1cd3ca0-bd96-4cf9-f77f-fdce757d81d1.png)