> 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 の所有者を同期（スケジュール実行）

セキュリティ グループのメンバーが、マップされた Teams とその 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 は add-only です。既存の所有者やメンバーは削除されません。そのため、新しく作成された Shared Channel は次回の実行時に自動的に取り込まれます。必要に応じてレポートをメール送信したり、レポート ファイルをダウンロード リンクとしてアップロードしたりできます。ReportFileFormat パラメーターは、生成して配信するレポート ファイル形式（CSV のみ、CSV と XLSX、または XLSX のみ）を制御します。CSV 添付ファイルがメールサイズの制限を超え、かつ「CSV & XLSX」が選択されている場合、メールは Excel ブックのみを送るようにフォールバックします。マッピング ルールと設定については、付属のドキュメントを参照してください。

### 仕組み

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

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

runbook は **add-only**です。既存の所有者やメンバーを昇格・削除することはありません。そのため、新しく作成された Shared Channel は、すでに存在する状態に影響を与えることなく、次回のスケジュール実行時に自動的に取り込まれます。

#### マッピング設定

マッピングは RealmJoin の org 設定（Runbook Customization → `Settings` → `SharedChannelOwners.Mapping`）に中央で保存されるため、1 回設定すればすべてのスケジュールで共有されます。これは次の一覧です。 `{ 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 グループのみを **Team**.

#### 変更される内容

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

#### ドライ ラン

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

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

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

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

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

スケジュールで無人実行するように設計されています。設定は org 設定に集約され、runbook は add-only かつ冪等であるため、1 つの定期スケジュールで、チームや Shared Channel の追加・削除があっても、マッピングされたすべてのチームとその Shared Channel を同期状態に保てます。

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

レポートメールは、任意の `RJReport.Branding.*` テナント設定に従います:

* **ヘッダーおよびフッター画像** – 公開 HTTPS URL、PNG/JPEG/GIF、各最大 200 KB
* **フッターリンク** – フッター画像のリンク先
* **アクセント色とテキスト色** – 6 桁の 16 進数値、例: `#0052cc`

これらの設定が構成されていない場合、既定の RealmJoin のグラフィックと色が使用されます。ダウンロードまたは検証できない画像や無効な色の値が、レポートメールを妨げることはありません。代わりに対応する既定値が使用されます。

セットアップ手順と画像要件: [メールのブランド設定](https://docs.realmjoin.com/automation/runbooks/runbook-report-settings#email-branding-optional).

### 場所

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 Channel を見つけます*
  * ChannelMember.ReadWrite.All
    * *チャネル メンバーを読み取り、ユーザーを追加するか Shared Channel の所有者に昇格します*
  * Mail.Send *(オプション — 機能: メール レポート)*
    * *EmailTo が設定されている場合に、Send-RjReportEmail 経由で同期レポート メールを送信します*
  * User.Read.All
    * *transitiveMembers を通じてメンバーのユーザー プロパティ（UPN、userType）を読み取り、ゲストを除外します*
  * Organization.Read.All *(オプション — 機能: メール レポート)*
    * *レポート メール用の Tenant の表示名を読み取ります*

### パラメーター

#### TeamOwnerGroupMapping

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

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

#### IncludeTeamOwners

有効な場合（既定）、所有者グループのメンバーは親チーム自体（Microsoft 365 グループの所有者/メンバー）に対しても所有者およびメンバーとして保証されます。チーム メンバーシップはチャネル所有権の前提条件でもあります。

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

#### 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 桁の 16 進数、例: '#0052cc'）。RJReport.Branding.AccentColor テナント設定から取得されます。空または無効な場合は、既定の RealmJoin アクセント色が使用されます。

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

#### BrandingTextColor

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

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

#### ReportFileFormat

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

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

#### CreateDownloadLink

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

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

#### ContainerName

アップロードに使用する Storage Account 用コンテナー。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.
