> For the complete documentation index, see [llms.txt](https://docs.realmjoin.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.realmjoin.com/ja/zi-dong-hua/runbooks/runbook-references/org/general/sync-channel-or-group-members_scheduled.md).

# チャネルまたはグループ メンバーを同期（スケジュール）

### 説明

スケジュール実行されるこの runbook は、1 回の実行ごとにソース オブジェクトのメンバーシップをターゲット オブジェクトへ一方向にミラーリングします。Teams Shared Channel のメンバーを security group に同期する、1 つのグループのメンバーを別のグループへ同期する（たとえば Microsoft 365 グループを security group に、またはその逆）、およびグループのメンバーを Teams Shared Channel に同期することをサポートします。不足しているメンバーの追加は常に実行され、ターゲットにのみ存在するメンバーの削除は任意で、パラメーターで制御されます。ゲストの扱いや、チャンネルからの削除時にホスト チームのメンバーシップも削除するかどうかは設定可能で、runbook は必要に応じてメール レポートを送信し、結果を期限付きダウンロード リンクとしてアップロードできます。ReportFileFormat パラメーターは、生成・配信されるレポート ファイル形式（CSV のみ、CSV & XLSX、または XLSX のみ）を制御します。CSV 添付ファイルがメールのサイズ制限を超え、"CSV & XLSX" が選択されている場合、メールは Excel ワークブックのみへフォールバックします。

### 仕組み

このスケジュール実行される runbook は、ある **ソース** オブジェクトを **ターゲット** オブジェクトへ、実行ごとに 1 方向でミラーリングします。各実行で次を行います:

1. 選択した方向に対するソースおよびターゲット オブジェクトを解決します。
2. 両側の現在のメンバー セットを読み取ります。
3. ターゲットに存在しないソース メンバーをすべて追加します。
4. 必要に応じて、ソースに存在しないターゲット メンバーをすべて削除します（ミラー モード）。

#### 方向

この `Direction` パラメーターは、何を何に同期するかを選択します:

* **`SharedChannelToGroup`** - Teams Shared Channel のメンバーがターゲットのセキュリティ グループにコピーされます。
* **`GroupToGroup`** - ソース グループのメンバーがターゲット グループにコピーされます（たとえば Microsoft 365 グループをセキュリティ グループに、またはソースとターゲットを入れ替えた逆方向）。
* **`GroupToSharedChannel`** - ソース グループのメンバーが Teams Shared Channel にコピーされます。

#### 追加と削除

不足しているメンバーの追加は常に実行されます。ソースに存在せずターゲットにのみ存在するメンバーの削除は **オプトイン** で `RemoveExtraMembers` を使用します（既定ではオフ）。削除を有効にすると、ターゲットはソースに対して完全にミラーリングされます。無効の場合、runbook は追加のみを行います。

#### グループ メンバーの展開

ソース側のグループ メンバーは **再帰的に**解決されるため、ネストされたグループ経由でメンバーになっているユーザーも含まれます。ターゲット側では、追加および削除の操作は直接メンバーシップに対して作用するため、 **直接の** メンバーのみが対象となります。

#### ゲストの扱い

`IncludeGuests` （既定ではオフ）は、ゲスト ユーザーを同期に含めるかどうかを制御します。オフの場合、ゲストは両側でスキップされ、追加も削除もされません。Shared Channel はゲストを拒否することが多いため、既定ではオフです。

#### Shared Channel 固有の動作

* グループが **Shared Channel に** 同期される場合、チーム メンバーシップはチャンネル メンバーシップの前提条件であるため、runbook はまずユーザーがホスト チームのメンバーであることを確認し、その後ユーザーをチャンネルに追加します。
* メンバーが **削除された** 場合、既定ではチャンネル メンバーシップのみが削除されます。 `RemoveFromTeam` を有効にすると、ホスト チームのメンバーシップからもユーザーを削除します。

#### Dry run

を設定すると `WhatIfMode` 書き込みを行わずに、何が変更されるかを記録します。

#### レポート（省略可、両方とも既定でオフ）

* **`SendEmailReport`** を有効にすると、RealmJoin ブランドのメールが（ `Send-RjReportEmail`）には実行統計と、個々の変更を一覧した CSV 添付ファイルが含まれます。送信者は `RJReport.EmailSender` 設定
* **`CreateDownloadLink`** 同じ CSV を Storage Account にアップロードし、期限付きの SAS ダウンロード リンクを返します（両方のオプションが有効な場合はメールにも埋め込まれます）。ターゲットの Storage Account は `RJReport.StorageAccount.*` 設定から取得されます。

ストレージへのアップロードは Automation アカウントのマネージド ID で認証されます。この ID には対象のストレージ アカウントに対する **Storage Blob Data Contributor** RBAC ロールが必要です（これは Azure RBAC の割り当てであり、Graph のアプリケーション権限ではありません）。

#### スケジュール

スケジュールに従って自動実行されるように設計されています。runbook は冪等であるため、定期実行のスケジュールを 1 つ設定するだけで、メンバーの追加・削除に応じてターゲットをソースと同期し続けられます。

### 場所

Organization → General → チャンネルまたはグループ メンバーを同期（Scheduled）

**Runbook の完全名**

rjgit-org\_general\_sync-channel-or-group-members\_scheduled

### 権限

#### アプリケーション権限

* **種類**: Microsoft Graph
  * Group.ReadWrite.All
  * GroupMember.ReadWrite.All
  * Channel.ReadBasic.All
  * ChannelMember.ReadWrite.All
  * TeamMember.ReadWrite.All
  * User.Read.All
  * Organization.Read.All
  * Mail.Send

### パラメーター

#### Direction

何を何に同期するかを選択します。SharedChannelToGroup は Shared Channel のメンバーをターゲット グループにコピーし、GroupToGroup はソース グループのメンバーをターゲット グループにコピーし、GroupToSharedChannel はソース グループのメンバーを Shared Channel にコピーします。

| プロパティ | 値    |
| ----- | ---- |
| 必須    | true |
| 既定値   |      |
| 種類    | 文字列  |

#### TeamId

Shared Channel をホストするチームのオブジェクト ID。Shared Channel 方向でのみ使用されます。

| プロパティ | 値     |
| ----- | ----- |
| 必須    | false |
| 既定値   |       |
| 種類    | 文字列   |

#### ChannelName

選択したチーム内にある Shared Channel の正確な表示名。Shared Channel 方向でのみ使用されます。

| プロパティ | 値     |
| ----- | ----- |
| 必須    | false |
| 既定値   |       |
| 種類    | 文字列   |

#### SourceGroupId

メンバーがコピーされるソース グループのオブジェクト ID。グループ ソース方向で使用されます。

| プロパティ | 値     |
| ----- | ----- |
| 必須    | false |
| 既定値   |       |
| 種類    | 文字列   |

#### TargetGroupId

メンバーを受け取るターゲットのセキュリティ グループのオブジェクト ID。グループ ターゲット方向で使用されます。

| プロパティ | 値     |
| ----- | ----- |
| 必須    | false |
| 既定値   |       |
| 種類    | 文字列   |

#### RemoveExtraMembers

有効にすると、ソースに存在せずターゲットにのみ存在するメンバーが削除され、ターゲットはソースをミラーリングします。無効（既定）の場合、runbook は不足しているメンバーのみを追加します。

| プロパティ | 値       |
| ----- | ------- |
| 必須    | false   |
| 既定値   | False   |
| 種類    | Boolean |

#### IncludeGuests

有効にすると、ゲスト ユーザーが同期に含まれ、追加または削除される場合があります。無効（既定）の場合、ゲストはスキップされ、追加も削除もされません。

| プロパティ | 値       |
| ----- | ------- |
| 必須    | false   |
| 既定値   | False   |
| 種類    | Boolean |

#### RemoveFromTeam

GroupToSharedChannel にのみ関連します。有効にすると、Shared Channel からメンバーを削除したときに、そのユーザーをホスト チームのメンバーシップからも削除します。無効（既定）の場合、チャンネル メンバーシップのみが削除されます。

| プロパティ | 値       |
| ----- | ------- |
| 必須    | false   |
| 既定値   | False   |
| 種類    | Boolean |

#### WhatIfMode

有効にすると、runbook は何も書き込まずに実行予定の変更内容だけをログに記録します。

| プロパティ | 値       |
| ----- | ------- |
| 必須    | false   |
| 既定値   | False   |
| 種類    | Boolean |

#### SendEmailReport

有効にすると、RealmJoin ブランドのメール レポートが実行後に Send-RjReportEmail 経由で送信されます。これをオンにすると、宛先アドレスとレポート ファイル形式のフィールドが表示されます。

| プロパティ | 値       |
| ----- | ------- |
| 必須    | false   |
| 既定値   | False   |
| 種類    | Boolean |

#### EmailTo

レポートの宛先メール アドレス（複数可、カンマ区切り）。SendEmailReport が有効な場合にのみ使用されます。

| プロパティ | 値     |
| ----- | ----- |
| 必須    | false |
| 既定値   |       |
| 種類    | 文字列   |

#### EmailFrom

レポートの送信元メールボックス。組織設定 RJReport.EmailSender にバインドされます。

| プロパティ | 値     |
| ----- | ----- |
| 必須    | false |
| 既定値   |       |
| 種類    | 文字列   |

#### ReportFileFormat

生成して配信するレポート ファイルの形式を制御します: "CSV only"、"CSV & XLSX"（既定）または "XLSX only"。

| プロパティ | 値          |
| ----- | ---------- |
| 必須    | false      |
| 既定値   | CSV & XLSX |
| 種類    | 文字列        |

#### CreateDownloadLink

有効にすると、レポート ファイルが Storage Account にアップロードされ、期限付きダウンロード リンクが返されます（メール レポートも有効な場合は、メール レポートにも含まれます）。

| プロパティ | 値       |
| ----- | ------- |
| 必須    | false   |
| 既定値   | False   |
| 種類    | Boolean |

#### ContainerName

アップロードに使用するストレージ コンテナー。runbook ごとに設定されます。

| プロパティ | 値                         |
| ----- | ------------------------- |
| 必須    | false                     |
| 既定値   | channel-group-member-sync |
| 種類    | 文字列                       |

#### ResourceGroupName

Storage Account を含むリソース グループ。RJReport.StorageAccount.ResourceGroup にバインドされます。

| プロパティ | 値     |
| ----- | ----- |
| 必須    | false |
| 既定値   |       |
| 種類    | 文字列   |

#### StorageAccountName

アップロードに使用する Storage Account。RJReport.StorageAccount.StorageAccountName にバインドされます。

| プロパティ | 値     |
| ----- | ----- |
| 必須    | false |
| 既定値   |       |
| 種類    | 文字列   |

#### LinkExpiryDays

生成されたダウンロード リンクの有効期限が切れるまでの日数。RJReport.StorageAccount.LinkExpiryDays にバインドされます。

| プロパティ | 値     |
| ----- | ----- |
| 必須    | false |
| 既定値   | 6     |
| 種類    | Int32 |

[Runbook Reference の概要に戻る](/ja/zi-dong-hua/runbooks/runbook-references.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.realmjoin.com/ja/zi-dong-hua/runbooks/runbook-references/org/general/sync-channel-or-group-members_scheduled.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
