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

# Shared Channel の所有者を同期 - 定期実行

{% hint style="info" %}
これはスケジュール実行の runbook です。単一のオブジェクトでトリガーされるのではなく、繰り返しのスケジュールで実行されるように設計されています。参照してください [スケジュール設定](/ja/zi-dong-hua/runbooks/scheduling.md) runbook のスケジュールを構成する方法の詳細について。
{% endhint %}

### 説明

Teams の Shared Channel は親チームから所有権を継承しません。このスケジュール実行される runbook はそのギャップを埋めます。マッピングで指定された各チームについて、マッピングされた security group のメンバーが、そのチームおよびチームがホストするすべての shared channel の所有者であることを保証します。チーム名から所有者グループへのマッピングは、RealmJoin の org 設定として中央で管理されます。runbook は追加のみです。既存の所有者とメンバーは決して削除されません。そのため、新しく作成された shared channel は次回の実行で自動的に取り込まれます。必要に応じて、レポートをメール送信したり、レポートファイルをダウンロードリンクとしてアップロードしたりできます。ReportFileFormat パラメーターは、生成して配信するレポートファイル形式（CSV のみ、CSV と XLSX、または XLSX のみ）を制御します。CSV 添付ファイルがメールのサイズ制限を超え、"CSV & XLSX" が選択されている場合、メールは Excel ワークブックのみを使用するようにフォールバックします。マッピング ルールと構成については、付属のドキュメントを参照してください。

### 仕組み

各実行で Runbook は次を行います:

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

runbook は **追加のみ**です。既存の所有者やメンバーを昇格または削除することはありません。そのため、新しく作成された shared channel は、既にあるものを一切変更せずに、次回のスケジュール実行で自動的に取り込まれます。

#### マッピング構成

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

#### チームの照合

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

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

#### チームの選択

設定された各 `TeamName` について、runbook は Graph `displayName eq '...'` の検索を実行し、次のものとしてプロビジョニングされた Microsoft 365 グループのみを保持します。 **Team**.

#### 変更対象

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

#### ドライラン

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

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

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

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

#### スケジュール設定

スケジュールに従って無人で実行されるように設計されています。設定は org 設定に一元化されており、runbook は追加のみで冪等であるため、1 つの繰り返しスケジュールで、メンバーや channel の増減に合わせて、マッピングされたすべてのチームとその shared channel を同期し続けられます。

### メールのブランド設定

レポートメールでは、任意の `RJReport.Branding.*` テナント設定が考慮されます。対象は、カスタムのヘッダー画像、カスタムのフッター画像（公開 HTTPS URL、PNG/JPEG/GIF、各最大 200 KB）、カスタムのフッターリンク、およびカスタムのアクセントカラーとテキストカラー（6 桁の hex 値、例: `#0052cc`）です。これらの設定が構成されていない場合は、既定の RealmJoin のグラフィックと色が使用されます。ダウンロードまたは検証できないブランド画像、または有効な hex カラーではない色の値があっても、レポートメールが送信されなくなることはありません。代わりに、該当する既定値が使用されます。

詳細については、 [RealmJoin レポート設定のドキュメント](https://docs.realmjoin.com/automation/runbooks/runbook-report-settings) 設定の詳細については、

### 場所

Organization → General → Sync Shared Channel Owners (Scheduled)

**Runbook の完全名**

rjgit-org\_general\_sync-shared-channel-owners\_scheduled

### 詳細

| プロパティ    | 値                                                                                                                 |
| -------- | ----------------------------------------------------------------------------------------------------------------- |
| バージョン    | 1.3.0                                                                                                             |
| 必要なモジュール | <p>RealmJoin.RunbookHelper (>= 0.8.9)<br>Microsoft.Graph.Authentication (>= 2.39.0)<br>Az.Accounts (>= 5.5.2)</p> |
| スケジュール可能 | はい                                                                                                                |

### 注意

マッピングは一度だけ中央で設定します（Runbook Customization -> Settings）。“SharedChannelOwners.Mapping” の下の構造化されたサブ設定として指定します。各エントリはチームをその正確な表示名で指定します。非表示の TeamOwnerGroupMapping パラメーターは実行時にそこから注入されます。{ "Settings": { "SharedChannelOwners": { "Mapping": \[ { "TeamName": "EXT Service A", "OwnerGroupId": "11111111-1111-1111-1111-111111111111" }, { "TeamName": "EXT Service B", "OwnerGroupId": "22222222-2222-2222-2222-222222222222" } ] } } }

### アクセス許可

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

* **種類**：Microsoft Graph
  * Group.ReadWrite.All
    * *チームを一覧表示し、グループの所有者を読み取り、/groups/{id}/owners/$ref を介して不足しているチーム所有者を追加します*
  * GroupMember.ReadWrite.All
    * *所有者グループの推移的メンバーを読み取り、まずユーザーをチームのメンバーとして追加します*
  * Channel.ReadBasic.All
    * */teams/{id}/channels を一覧表示して、処理する shared channels を見つけます*
  * ChannelMember.ReadWrite.All
    * *channel のメンバーを読み取り、ユーザーを追加するか shared channel owner に昇格します*
  * Mail.Send *（任意 — 機能: メールレポート）*
    * *EmailTo が設定されている場合、Send-RjReportEmail を介して同期レポートのメールを送信します*
  * User.Read.All
    * *ゲストをフィルターするために、transitiveMembers を介してメンバーユーザーのプロパティ（UPN、userType）を読み取ります*
  * Organization.Read.All *（任意 — 機能: メールレポート）*
    * *レポートメール用に Tenant の表示名を読み取ります*

### パラメーター

#### TeamOwnerGroupMapping

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

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

#### IncludeTeamOwners

有効にすると（既定）、所有者グループのメンバーは親チーム自身の所有者およびメンバー（M365 グループの所有者/メンバー）としても確実に設定されます。Team のメンバーシップも channel ownership の前提条件です。

| プロパティ | 値    |
| ----- | ---- |
| 必須    | いいえ  |
| 既定値   | はい   |
| 種類    | ブール値 |

#### WhatIfMode

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

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

#### SendEmailReport

有効にすると、実行後に RealmJoin ブランドのメールレポートが Send-RjReportEmail を介して送信されます。本文には実行統計が含まれ、レポートファイル（チーム別サマリーと変更別詳細）は選択したレポートファイル形式で添付されます。

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

#### EmailTo

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

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

#### EmailFrom

レポートの送信元メールボックス。org Setting "RJReport.EmailSender" にバインドされています。

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

#### BrandingHeaderImageUrl

レポートメール用のカスタム ヘッダー画像（PNG/JPEG/GIF、最大 200 KB）の任意の公開 HTTPS URL です。RJReport.Branding.HeaderImageUrl テナント設定から取得されます。空の場合は、既定の RealmJoin ヘッダー グラフィックが使用されます。

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

#### BrandingFooterImageUrl

レポートメール用のカスタム フッター画像（PNG/JPEG/GIF、最大 200 KB）の任意の公開 HTTPS URL です。RJReport.Branding.FooterImageUrl テナント設定から取得されます。空の場合は、既定の RealmJoin フッター グラフィックが使用されます。

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

#### BrandingFooterLink

フッター画像のリンク先となる任意の URL です。RJReport.Branding.FooterLink テナント設定から取得されます。空の場合は、既定のリンク（<https://www.realmjoin.com）が使用されます。>

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

#### BrandingAccentColor

レポートメール テンプレート用のアクセントカラーの任意の上書き（6 桁の hex、例: '#0052cc'）です。RJReport.Branding.AccentColor テナント設定から取得されます。空または無効な場合は、既定の RealmJoin アクセントカラーが使用されます。

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

#### BrandingTextColor

レポートメール テンプレート用のテキストカラーの任意の上書き（6 桁の hex）です。RJReport.Branding.TextColor テナント設定から取得されます。空または無効な場合は、既定の RealmJoin テキストカラーが使用されます。

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

#### ReportFileFormat

生成および配信されるレポート ファイル形式を制御します: CSV のみ、CSV と XLSX（既定）または XLSX のみ。

| プロパティ | 値          |
| ----- | ---------- |
| 必須    | いいえ        |
| 既定値   | CSV と XLSX |
| 種類    | 文字列        |

#### CreateDownloadLink

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

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

#### ContainerName

アップロードに使用する Storage コンテナー。runbook ごとに設定します（グローバルな RJReport 設定ではありません）。

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

#### ResourceGroupName

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

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

#### StorageAccountName

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

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

#### LinkExpiryDays

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

| プロパティ | 値     |
| ----- | ----- |
| 必須    | いいえ   |
| 既定値   | 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-shared-channel-owners_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.
