> 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 %}

### 説明

共有チャネルは、所属するチームの所有者を継承しません。マッピングで名前が指定された各チームについて、対応する Security Group のメンバーが、そのチームおよびそのチームがホストする各共有チャネルの所有者になります。追加のみで、削除は行いません。新しい共有チャネルは次回実行時に取り込まれます。ドライランでは、適用せずに変更内容のみを表示します。レポートはメール送信するか、ダウンロードリンクとして提供できます。

### 仕組み

各実行で、runbook は次を行います：

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

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

#### マッピングの構成

マッピングは RealmJoin の org 設定（Runbook Customization → `設定` → `SharedChannelOwners.Mapping`）にあり、1 回だけ保守され、すべてのスケジュールで共有されます。これは `{ TeamName, OwnerGroupId }` というオブジェクトの一覧で、 `TeamName` は **チームの正確な表示名**です。非表示の `TeamOwnerGroupMapping` パラメーターはこの設定から注入されます。runbook はこれを、構造化配列（推奨されるサブ設定形式）または JSON 文字列のいずれかとして受け取り、両方を正規化します。

org 設定ですぐに使える例:

```json
{
    "Settings": {
        "SharedChannelOwners": {
            "Mapping": [
                { "TeamName": "EXT Service A", "OwnerGroupId": "11111111-1111-1111-1111-111111111111" },
                { "TeamName": "EXT Service B", "OwnerGroupId": "22222222-2222-2222-2222-222222222222" }
            ]
        }
    }
}
```

#### チームの照合

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

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

#### チームの選択

構成済みの各 `TeamName` この runbook は Graph の `displayName eq '...'` ルックアップを行い、Team としてプロビジョニングされている Microsoft 365 グループのみを保持します。 **Team**.

#### 変更される内容

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

#### ドライラン

選択 **ドライラン？** すると、何も書き込まずに変更内容を記録します。各実行では、最初に処理対象のチーム（それぞれの所有者グループ付き）と、見つからなかった構成済みのチーム名が出力されます。ドライランでは変更内容は予定変更として一覧表示されます。

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

無人でスケジュール実行されるよう設計されています。構成は org 設定に集中管理されており、runbook は追加のみかつ冪等であるため、1 つの繰り返しスケジュールで、割り当て済みのすべてのチームとその Shared Channel を、メンバーやチャネルの増減に合わせて同期状態に保てます。

### レポート配信

各実行では、結果が RealmJoin ポータルの Output Data タブに書き込まれます。概要、実行された変更（またはドライランで予定された変更）、スキップされたチームとユーザーとその理由（チームが見つからない、所有者グループが空、ゲスト ユーザー、変更の失敗）、そしてすでに設定済みだった所有者割り当てが含まれます。各テーブルはそこから Excel にエクスポートできます。

レポートファイルは、配信方法が次の方法で選択された場合にのみ生成されます。 **レポート配信** オプション（メールおよび/またはダウンロードリンク）: チームごとの要約と変更ごとの詳細一覧を、CSV ファイルおよび/または Excel ブックとして提供します。この *Output Data のみ* を選択すると、結果は Output Data タブで直接読み取られます。メール配信とダウンロードリンク生成は独立しており、組み合わせ可能です。両方を選択すると、ダウンロードリンクもメールに埋め込まれます。

ダウンロードリンクの場合、レポートファイルは、 `RJReport.StorageAccount.*` テナント設定で構成された Azure Storage Account にアップロードされ、時間制限付きの SAS ダウンロードリンクが返されます。ストレージへのアップロードは Automation アカウントのマネージド ID で認証します。その ID には、 **Reader and Data Access** RBAC ロールがターゲットの Storage Account に必要です（これは Azure RBAC の割り当てであり、Graph アプリケーション権限ではありません）。

以前の配信ラベル（たとえば *メール レポート*）で保存されたスケジュールは、その配信設定を保持します。そのようなスケジュールを編集用に開くと、オプションには *Output Data のみ* 保存済みの配信は有効なままですが、保存前に配信をもう一度選択して、ダイアログがスケジュールの動作と一致するようにしてください。

### メール送信に関する設定

メールレポートの送信は任意であり、次の場合にのみ行われます。 *レポートもメール送信* または *メール送信とダウンロードリンクも追加* がレポート配信として選択されると、受信者が必要になります。RealmJoin ブランドのメール（ `Send-RjRbReportEmail`経由で送信される）は、実行統計とレポート ファイルを添付ファイルとして含みます。差出人アドレスは `RJReport.EmailSender` テナント設定から取得されます。

この runbook は Microsoft Graph API を使用してメールを送信します。Graph API 経由でメールを送信するには、runbook のカスタマイズで既存のメールアドレスを設定する必要があります。

詳細については [RealmJoin Report Settings のドキュメント](https://docs.realmjoin.com/automation/runbooks/runbook-report-settings) を参照してください。

#### メールのブランディング

レポートメールでは、任意の `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.4.0                                                                                                              |
| 必須モジュール  | <p>RealmJoin.RunbookHelper (>= 0.8.10)<br>Microsoft.Graph.Authentication (>= 2.41.2)<br>Az.Accounts (>= 5.5.2)</p> |
| スケジュール可能 | はい                                                                                                                 |

### 権限

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

* **種類**: Microsoft Graph
  * Channel.ReadBasic.All
    * *処理対象の Shared Channel を見つけるために /teams/{id}/channels を一覧表示します*
  * ChannelMember.ReadWrite.All
    * *チャネル メンバーを読み取り、ユーザーを追加するか Shared Channel のオーナーに昇格させます*
  * Group.ReadWrite.All
    * *Teams を一覧表示し、オーナー グループ名とグループ所有者を読み取り、/groups/{id}/owners/$ref を介して不足しているチーム所有者を追加します*
  * GroupMember.ReadWrite.All
    * *オーナー グループの推移的メンバーを読み取り、ユーザーをまずチーム メンバーとして追加します*
  * User.Read.All
    * *transitiveMembers 経由でメンバー ユーザーのプロパティ（UPN、userType）を読み取り、ゲストをフィルターします*
  * Mail.Send *(オプション — 機能: メール レポート)*
    * *メール配信が選択されている場合、Send-RjRbReportEmail 経由で同期レポート メールを送信します*
  * Organization.Read.All *(オプション — 機能: メール レポート)*
    * *レポート メール用に Tenant の表示名を読み取ります*

#### アクセス許可に関する注意

Azure Storage Account: Automation Account のマネージド ID に対してターゲットの Storage Account 上で 'Reader and Data Access' ロールを付与します。アップロードでは listKeys を使用してアカウント キーを取得します（ダウンロードリンクのオプションでのみ必要です）

### パラメーター

#### TeamOwnerGroupMapping

メンバーが所有者になる Security Group を持つチーム名の一覧。Tenant 設定 SharedChannelOwners.Mapping から取得します。

| プロパティ    | 値                         |
| -------- | ------------------------- |
| 必須       | false                     |
| 既定値      | \[]                       |
| 種類       | オブジェクト                    |
| ポータルで非表示 | はい (Runbook のカスタマイズで事前設定) |

#### IncludeTeamOwners

グループ メンバーをチーム自体の所有者およびメンバーにもします。これは、そのチャネルを所有するために必要です。

| プロパティ   | 値                 |
| ------- | ----------------- |
| 必須      | false             |
| 既定値     | True              |
| 種類      | ブール値              |
| ポータル表示名 | それらをチーム所有者にもしますか? |

#### WhatIfMode

何も書き込まず、変更される内容だけを記録します。

| プロパティ   | 値      |
| ------- | ------ |
| 必須      | false  |
| 既定値     | False  |
| 種類      | ブール値   |
| ポータル表示名 | ドライラン？ |

#### SendEmailReport

レポートを受信者のメールアドレスに送信します。

| プロパティ    | 値                         |
| -------- | ------------------------- |
| 必須       | false                     |
| 既定値      | False                     |
| 種類       | ブール値                      |
| ポータルで非表示 | はい (Runbook のカスタマイズで事前設定) |

#### EmailTo

レポートをこれらの宛先に送信します。複数ある場合はカンマで区切ってください。各受信者には個別のメールが届きます。

| プロパティ    | 値                         |
| -------- | ------------------------- |
| 必須       | false                     |
| 既定値      |                           |
| 種類       | 文字列                       |
| ポータル表示名  | 宛先メールアドレス                 |
| ポータルで非表示 | はい (Runbook のカスタマイズで事前設定) |

#### EmailFrom

レポートメールの送信元アドレス。テナント設定 RJReport.EmailSender から取得されます。

| プロパティ    | 値                         |
| -------- | ------------------------- |
| 必須       | false                     |
| 既定値      |                           |
| 種類       | 文字列                       |
| ポータルで非表示 | はい (Runbook のカスタマイズで事前設定) |

#### BrandingHeaderImageUrl

レポートメールのヘッダー画像 (HTTPS URL、PNG/JPEG/GIF、最大 200 KB)。テナント設定 RJReport.Branding.HeaderImageUrl から取得されます。空の場合は既定の RealmJoin ヘッダーが使用されます。

| プロパティ    | 値                         |
| -------- | ------------------------- |
| 必須       | false                     |
| 既定値      |                           |
| 種類       | 文字列                       |
| ポータルで非表示 | はい (Runbook のカスタマイズで事前設定) |

#### BrandingFooterImageUrl

レポートメールのフッター画像 (HTTPS URL、PNG/JPEG/GIF、最大 200 KB)。テナント設定 RJReport.Branding.FooterImageUrl から取得されます。空の場合は既定の RealmJoin フッターが使用されます。

| プロパティ    | 値                         |
| -------- | ------------------------- |
| 必須       | false                     |
| 既定値      |                           |
| 種類       | 文字列                       |
| ポータルで非表示 | はい (Runbook のカスタマイズで事前設定) |

#### BrandingFooterLink

レポートメールのフッター画像のリンク先。テナント設定 RJReport.Branding.FooterLink から取得されます。空の場合は realmjoin.com が使用されます。

| プロパティ    | 値                         |
| -------- | ------------------------- |
| 必須       | false                     |
| 既定値      |                           |
| 種類       | 文字列                       |
| ポータルで非表示 | はい (Runbook のカスタマイズで事前設定) |

#### BrandingAccentColor

レポートメールのアクセントカラーを 6 桁の 16 進数値で指定します。テナント設定 RJReport.Branding.AccentColor から取得されます。空または無効な場合は RealmJoin の既定値が使用されます。

| プロパティ    | 値                         |
| -------- | ------------------------- |
| 必須       | false                     |
| 既定値      |                           |
| 種類       | 文字列                       |
| ポータルで非表示 | はい (Runbook のカスタマイズで事前設定) |

#### BrandingTextColor

レポートメールのテキストカラーを 6 桁の 16 進数値で指定します。テナント設定 RJReport.Branding.TextColor から取得されます。空または無効な場合は RealmJoin の既定値が使用されます。

| プロパティ    | 値                         |
| -------- | ------------------------- |
| 必須       | false                     |
| 既定値      |                           |
| 種類       | 文字列                       |
| ポータルで非表示 | はい (Runbook のカスタマイズで事前設定) |

#### ReportFileFormat

レポートを CSV、Excel ブック、またはその両方で配信します。

| プロパティ    | 値                         |
| -------- | ------------------------- |
| 必須       | false                     |
| 既定値      | CSV と XLSX                |
| 種類       | 文字列                       |
| ポータル表示名  | レポート ファイルの形式              |
| ポータルで非表示 | はい (Runbook のカスタマイズで事前設定) |

**ポータルのオプション**

| ポータル オプション | 値          |
| ---------- | ---------- |
| CSV と XLSX | CSV と XLSX |
| CSV のみ     | CSV のみ     |
| XLSX のみ    | XLSX のみ    |

#### CreateDownloadLink

レポートもアップロードし、数日後に期限切れになるダウンロード リンクを返します。

| プロパティ    | 値                         |
| -------- | ------------------------- |
| 必須       | false                     |
| 既定値      | False                     |
| 種類       | ブール値                      |
| ポータルで非表示 | はい (Runbook のカスタマイズで事前設定) |

#### コンテナー名

レポート ファイルがアップロードされるストレージ コンテナーです。runbook ごとに設定します。

| プロパティ    | 値                         |
| -------- | ------------------------- |
| 必須       | false                     |
| 既定値      | shared-channel-owners     |
| 種類       | 文字列                       |
| ポータルで非表示 | はい (Runbook のカスタマイズで事前設定) |

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

レポート アップロード用のストレージ アカウントのリソース グループです。Tenant 設定 RJReport.StorageAccount.ResourceGroup から取得されます。

| プロパティ    | 値                         |
| -------- | ------------------------- |
| 必須       | false                     |
| 既定値      |                           |
| 種類       | 文字列                       |
| ポータルで非表示 | はい (Runbook のカスタマイズで事前設定) |

#### Storage Account 名

レポート アップロード用の Storage Account です。Tenant 設定 RJReport.StorageAccount.StorageAccountName から取得されます。

| プロパティ    | 値                         |
| -------- | ------------------------- |
| 必須       | false                     |
| 既定値      |                           |
| 種類       | 文字列                       |
| ポータルで非表示 | はい (Runbook のカスタマイズで事前設定) |

#### LinkExpiryDays

ダウンロード リンクが有効なままの期間（日数）です。Tenant 設定 RJReport.StorageAccount.LinkExpiryDays から取得されます。

| プロパティ    | 値                         |
| -------- | ------------------------- |
| 必須       | false                     |
| 既定値      | 6                         |
| 種類       | Int32                     |
| ポータルで非表示 | はい (Runbook のカスタマイズで事前設定) |

[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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
