> 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-sharedchannel-owners_scheduled.md).

# 共有チャネルの所有者を同期（スケジュール）

### 説明

Teams の共有チャネルは、親チームから所有権を継承しません。このスケジュール実行される runbook はそのギャップを埋めます。マッピングに名前がある各チームについて、対応する Security Group のメンバーがそのチームおよびチームがホストするすべての共有チャネルの所有者であることを保証します。チーム名から所有者グループへのマッピングは、RealmJoin の組織設定として中央で管理されます。この runbook は追加のみです。既存の所有者やメンバーは削除されないため、新しく作成された共有チャネルは次回の実行でそのまま取り込まれます。必要に応じて、レポートのメール送信や CSV 結果のダウンロード リンクとしてのアップロードもできます。マッピング ルールと構成については、付属のドキュメントを参照してください。

### 仕組み

各実行時に runbook は次を行います:

1. 組織設定からチーム名→所有者グループのマッピングを読み取ります `SharedChannelOwners.Mapping`.
2. 各エントリについて、そのチームを **正確な表示名**.
3. で検索し、そのエントリの所有者グループを推移的な **ユーザー** メンバーに展開します（ゲストはスキップされます。ゲストは共有チャネルに所属できないためです）。
4. それらのユーザーが、そのチームおよびチームがホストするすべての **ホストされている** 共有チャネルの所有者であることを保証します。

runbook は **追加のみ**です。既存の所有者やメンバーを昇格したり削除したりすることはありません。そのため、新しく作成された共有チャネルは、すでに存在するものに影響を与えることなく、次回の定期実行で自動的に取り込まれます。

#### マッピング構成

マッピングは RealmJoin の組織設定（Runbook Customization → `Settings` → `SharedChannelOwners.Mapping`）に中央で保持されるため、一度設定すればすべてのスケジュールで共有されます。これは `{ TeamName, OwnerGroupId }` オブジェクトの一覧であり、 `TeamName` は **チームの正確な表示名** （ *注意* セクションに、すぐに使える例があります）。非表示の `TeamOwnerGroupMapping` パラメーターはこの設定から注入されます。runbook は、構造化された配列（推奨されるサブ設定形式）としても JSON 文字列としても受け付け、両方を正規化します。

#### チームの一致

各マッピング エントリは、明示的に名前が指定された 1 つのチームを対象にします:

* チームは、その **正確な表示名** （大文字小文字は区別されません。Microsoft Graph と一致します。設定された名前の前後の空白は無視されます）。対象になるのはそのチームだけで、プレフィックスやワイルドカードの動作はありません。そのため、エントリに `EXT Service A` と名付けても `EXT Service A Backup` やそれに類似するものには影響しません。
* 表示名は Entra ID で一意であることが保証されません。複数のチームが設定された名前を共有している場合、所有者グループは **すべて** に適用されます。チームが見つからない場合、そのエントリは *見つかりません* として報告され、スキップされます。

#### チームの選択

設定された各 `TeamName` について、runbook は Graph の `displayName eq '...'` ルックアップを実行し、Microsoft 365 グループのうち **チーム**.

#### 変更される内容

* **チーム（任意、 `IncludeTeamOwners`、既定ではオン）:** owner-group のユーザーは、親 M365 グループの所有者およびメンバーとしても追加されます。Team membership は shared-channel owner になるための技術的な前提条件でもあるため、この手順によってチャネル側の手順が有効になります。
* **共有チャネル:** ホストされている各共有チャネル（`membershipType eq 'shared'`）ごとに、各 owner-group ユーザーがチャネルの **所有者** になることを保証します。存在しない場合は直接追加し、すでにメンバーであれば昇格します。直接の所有者追加が拒否された場合（たとえば membership のレプリケーション遅延など）、runbook はまずユーザーをメンバーとして追加し、その後昇格するようフォールバックします。

#### ドライラン

設定する **`WhatIfMode`** を使うと、何も書き込まずに変更内容をログに出力できます。このモードでは、runbook は最初に処理対象のチーム（所有者グループ付き）と、見つからなかった設定済みのチーム名を表示します。

#### レポート出力（任意、どちらも既定ではオフ）

* **`SendEmailReport`** は、RealmJoin ブランドのメールを（ `Send-RjReportEmail`Send-RjReportEmail `RJReport.EmailSender` 経由で）送信し、実行統計と 2 つの CSV 添付ファイル（チームごとの概要と変更ごとの詳細一覧）を含めます。送信者は
* **`CreateDownloadLink`** は、同じ CSV をストレージ アカウントにアップロードし、期限付きの SAS ダウンロード リンクを返します（両方のオプションが有効な場合はメールにも埋め込まれます）。対象のストレージ アカウントは `RJReport.StorageAccount.*` 設定から取得されます。

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

#### スケジューリング

スケジュールで自動実行するように設計されています。構成は組織設定に集約され、runbook は追加のみで冪等であるため、1 つの定期スケジュールで、メンバーやチャネルの増減に応じて、マッピングされたすべてのチームとその共有チャネルを同期状態に保てます。

### 場所

Organization → General → Sync Sharedchannel Owners (Scheduled)

**完全な Runbook 名**

rjgit-org\_general\_sync-sharedchannel-owners\_scheduled

### アクセス許可

#### アプリケーションのアクセス許可

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

### パラメーター

#### TeamOwnerGroupMapping

正確なチーム表示名から所有者 Security Group オブジェクト ID へのマッピングです。例: \[{ "TeamName": "EXT Service A", "OwnerGroupId": "00000000-0000-0000-0000-000000000000" }]。非表示パラメーターで、組織設定 "SharedChannelOwners.Mapping" にバインドされています。RealmJoin ポータルがその値を注入し、runbook はそれをデシリアライズ済みのオブジェクト/配列（構造化されたサブ設定）としても JSON 文字列としても受け付け、両方を正規化します。

| プロパティ | 値      |
| ----- | ------ |
| 必須    | false  |
| 既定値   | \[]    |
| 種類    | オブジェクト |

#### IncludeTeamOwners

有効にすると（既定）、owner-group のメンバーは親チーム自体の所有者およびメンバー（M365 グループの所有者/メンバー）としても確実に設定されます。Team membership はチャネル所有権の前提条件でもあります。

| プロパティ | 値     |
| ----- | ----- |
| 必須    | false |
| 既定値   | True  |
| 種類    | ブール値  |

#### WhatIfMode

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

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

#### SendEmailReport

有効にすると、run 後に Send-RjReportEmail を通じて RealmJoin ブランドのメール レポートが送信されます。本文には実行統計と 2 つの CSV 添付ファイル（チームごとの概要と変更ごとの詳細）が含まれます。

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

#### EmailTo

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

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

#### EmailFrom

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

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

#### CreateDownloadLink

有効にすると、CSV レポートがストレージ アカウントにアップロードされ、期限付きのダウンロード リンクが返されます（こちらも有効な場合はメール レポートにも含まれます）。既定ではオフです。

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

#### コンテナー名

アップロードに使用するストレージ コンテナー。各 runbook ごとに設定されます（グローバルな RJReport 設定ではありません）。

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

#### リソース グループ名

ストレージ アカウントを含むリソース グループ。"RJReport.StorageAccount.ResourceGroup" にバインドされています。

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

#### StorageAccountName

アップロードに使用するストレージ アカウント。"RJReport.StorageAccount.StorageAccountName" にバインドされています。

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

#### LinkExpiryDays

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

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

[Runbook リファレンスの概要に戻る](/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:

```
GET https://docs.realmjoin.com/ja/zi-dong-hua/runbooks/runbook-references/org/general/sync-sharedchannel-owners_scheduled.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
