> 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/dev-reference/runbook-output-data.md).

# Runbook 出力データ

runbook の結果を RealmJoin Portal で並べ替え・フィルター可能なテーブルとして表示し、構造化オブジェクトを出力する runbook を作成します。

## 概要

**出力データ** は、次のものの構造化された対応物です。 **コンソール** runbook ジョブページのタブです。コンソールには、実行の生の行単位テキスト フィードが保持されます。Output Data は、同じ実行で出力されたオブジェクトを表として表示します。GUID のような長い値は、 `…` に切り詰められるのではなく、PowerShell コンソール フォーマッターによって全文が表示され、幅広い結果セットも折り返されずに読みやすいままです。

主な特長:

* **設定不要、追加権限不要** — このタブは、オブジェクトを出力するすべての runbook で利用できます。何かを有効化する必要はなく、runbook を開始できるユーザーにも影響しません。
* **事前整形されたテキストではなくオブジェクト** — テーブルは、runbook が出力ストリームに書き出した内容から作成されます。runbook が結果を `Format-Table` で事前整形している場合、Output Data はまったく生成されません。
* **対話型テーブル** — 各テーブルは、それぞれ個別に並べ替え、フィルター、ページ送り、Excel または CSV へのエクスポートができます。
* **ネストされたデータも確認可能** — セル内のオブジェクトや配列は、読みにくい 1 つの文字列に平坦化されるのではなく、展開できます。
* **Console タブは変わりません** — 完全なテキスト出力は引き続き利用でき、コピーも可能です。通常、サービスや ITIL チケットに必要なのはこれです。

## クイック スタート

最小構成の runbook では、まずテーブル名を含むマーカー オブジェクトを出力し、その後にデータを出力します:

```powershell
[PSCustomObject]@{ RjTableTitle = 'Non-compliant devices' }
Write-Output $nonCompliantDevices
```

これにより、タイトルが **Non-compliant devices** の 1 つのテーブルが Output Data タブに表示されます。デバイスごとに 1 行、プロパティごとに 1 列になり、さらにそこへリンクする簡潔な要約行が Console タブに表示されます。

## ポータルで Output Data を読む

からジョブを開き、 [Runbook Logs](/ja/zi-dong-hua/runbooks/runbook-logs.md) のタブに切り替えます。 **出力データ** 参照: [Runbook Job Details](/ja/zi-dong-hua/runbooks/runbook-logs/runbook-job-details.md) そのページの他のタブについては。

### テーブルとナビゲーション

runbook が出力するオブジェクトのセットごとに、1 つのテーブルになります。各テーブルには次が含まれます:

* **タイトル** — runbook が付けた名前（参照: [テーブルに名前を付ける](#naming-a-table)）またはフォールバックの `Table 1`, `Table 2` など。
* **サイドバーの項目** — すべてのテーブルが左側に一覧表示され、タイトルをクリックするとそのテーブルへ移動します。
* **行数カウンター** — `12 / 340 行` は、テーブル全体のうち現在のフィルターに一致する行数を示します。

### フィルター

「 **Filter…** 」ボックスに入力されたテキストを含む行だけを残します。フィルターは、そのテーブルの全列に対する大文字小文字を区別しない部分文字列一致です。各テーブルは個別にフィルターされます。

### 並べ替え

列ヘッダーをクリックするとその列で並べ替えられ、もう一度クリックすると方向が反転します。矢印（`▲` / `▼`）がアクティブな列を示します。並べ替えは型を考慮します:

| 列の内容   | 並べ替え順                   |
| ------ | ----------------------- |
| 数値     | 数値順 — `2` 前に `10`.      |
| 日付     | 時系列順。                   |
| その他すべて | アルファベット順、大文字小文字を区別しません。 |

空のセルは先頭に並びます。

### ページ送り

テーブルは 50 行ごとにページ分割され、ページャーはテーブルの下に表示されます。フィルターと並べ替えは、現在表示中のページだけでなく、常にテーブル全体に適用されます。

### ネストされたオブジェクトとリスト

ネストされたオブジェクトや配列を含むセルは、読めない文字列に平坦化されません:

* セルにはキャレット（`▸`）が表示されます。これをクリックすると、そのオブジェクトまたは配列が行の下にインライン展開されます。
* 列ヘッダーには展開矢印があります。クリックすると、その列全体が独自のテーブルとして展開されます。各親行のネストされた値は行へ展開され、参照列が親行番号へリンクします。新しいテーブルはページ下部とサイドバーの末尾に追加され、他のテーブルと同様にフィルター、並べ替え、エクスポートできます。

### エクスポート

各テーブルには専用の **Excel にエクスポート** (`.xlsx`）と **CSV にエクスポート** ボタンがあります。エクスポートではアクティブなフィルターが反映され、一致する行だけが書き出されます。また、ファイル名にはテーブルのタイトルが使われます。Excel へのエクスポートでもタイトルがワークシート名として使われ、31 文字を超えるタイトルでは失敗します。 [テーブルに名前を付ける](#naming-a-table).

ポータルからのエクスポートは、その場限りのケースをカバーします。runbook が単独で配信すべきレポート ファイル — メール添付やダウンロード リンクとして — は、代わりに runbook 内で、 [Export-RjRbXlsx](/ja/dev-reference/report-functions/export-rjrbxlsx.md) および配信ヘルパーを使って作成してください。

## Console タブ

ジョブがテーブルを出力した場合、 **コンソール** タブでは既定で圧縮表示が使われます。テーブルは PowerShell 風に描画されますが、切り詰められるため、状態行は読みやすいままで、何百ものオブジェクトを出力した runbook でもページが埋まりません。各テーブルの代わりに、コンソールには要約 बॉक्सが表示されます:

```plaintext
╭─ Table ────────────────────────────────────────────╮
│ <table name> · <row count> rows                    │
╰───────────────────────────── → "Output Data" タブ ──╯
```

連続して出力されたテーブルは 1 つの बॉक्सを共有します:

```plaintext
╭─ Table ────────────────────────────────────────────╮
│ Devices                 · 3123 rows                │
│ Application credentials · 42 rows                  │
│ Large export sample     · 987654 rows              │
╰───────────────────────────── → "Output Data" タブ ──╯
```

`→ "Output Data" タブ` はリンクであり、対応するテーブルに切り替わります。

表示は 2 つのボタンで切り替えます:

* **完全な出力を表示** — 切り詰められていない完全なテキストに切り替えます。
* **圧縮テーブルを表示** — こちらに戻します。

**クリップボードにコピー** は、どの表示であっても常に完全な生の出力をコピーします。

## runbook から Output Data を出力する

このタブは、runbook が出力するオブジェクトから作成されます。したがって、きれいなテーブルを得るには、runbook が事前にテキストへ整形するのではなく、オブジェクトを書き出す必要があります。

### 整形済みテキストではなくオブジェクトを出力する

> **出力を次に通さない `Format-Table` または `Format-List`.** それらの cmdlet はデータではなく、フォーマット エンジンのレコードを出力します。ポータルはそれらを検出して非表示にし、出力が誤って整形されたことを示すヒントを表示します。PowerShell が、出力ストリームではなくホストに書き込まれた結果を自動整形する場合も同様です。

`Format-*` cmdlet は、あくまで *表示*を制御するだけです。それらが使われていた用途には、Output Data で表示できるデータ上の対応物があります。特に列の選択は `Select-Object` が行うことです:

| 代わりに                                 | 使用するもの                               |
| ------------------------------------ | ------------------------------------ |
| `$devices \| Format-Table Name, Id`  | `$devices \| Select-Object Name, Id` |
| `$devices \| Format-Table -AutoSize` | `Write-Output $devices`              |
| `$devices \| Format-List`            | `Write-Output $devices`              |

`Select-Object Name, Id` は、 `Format-Table Name, Id` が表示するのと同じ列選択を行います。しかもオブジェクトを出力するため、列は整形レコードとして削除されるのではなく、Output Data タブに残ります:

```powershell
# 良い例 — 実際のオブジェクト、列は Select-Object で選択
$devices | Select-Object Name, Id, OperatingSystem, LastSeen

# 悪い例 — フォーマット レコード、Output Data からは非表示
$devices | Format-Table Name, Id, OperatingSystem, LastSeen
```

選択されたプロパティが、そのまま結果テーブルの列になります: `Name`, `Id`, `OperatingSystem` と `LastSeen`、デバイスごとに 1 行です。

### オブジェクトがテーブルになる仕組み

| 出力されたもの               | 表示される形式                                                                    |
| --------------------- | -------------------------------------------------------------------------- |
| 1 つのオブジェクト            | 1 行 — そのプロパティが列になります。                                                      |
| 同じプロパティを持つ連続したオブジェクト  | 1 つのテーブル。                                                                  |
| 異なるプロパティセットを持つオブジェクト  | 新しいテーブルが始まります。                                                             |
| 単一のプレーン値（文字列、数値）      | テーブルではなく、コンソールのテキスト行になります。                                                 |
| で始まる行 `##` の後にスペースが続く | コンソール表示のヘッダー。                                                              |
| ネストされたオブジェクトまたは配列     | セル内の JSON。グリッド上で展開可能です — 参照 [ネストされたオブジェクトとリスト](#nested-objects-and-lists). |

### テーブルに名前を付ける

既定では、テーブルには `Table 1`, `Table 2` やその先が付けられます。意味のある名前を付けるには、runbook はデータの直前にマーカー オブジェクトを出力します。マーカーは 1 つのプロパティだけを持つオブジェクトで、その唯一のプロパティは `RjTableTitle`:

```powershell
[PSCustomObject]@{ RjTableTitle = 'Non-compliant devices' }
Write-Output $nonCompliantDevices
```

です。すると、次のテーブルのタイトルは **Non-compliant devices** — 見出し、サイドバー、エクスポート ファイル名に反映されます。

* マーカー自体は **消費**されます。行としてもコンソール行としても表示されません。
* プロパティ名は **大文字小文字を区別しません** — `RjTableTitle`, `rjtabletitle` 。他の大小文字の組み合わせでも動作します。
* 空の **タイトル** は無視されるため、空のマーカーで既存の名前を消すことはできません。
* 名前は、 **次に** 出力されるテーブルに適用されます。途中にステータス行があっても同じです。

このパターンを繰り返すと、1 回の実行で複数のテーブルに名前を付けられます:

```powershell
[PSCustomObject]@{ RjTableTitle = 'Compliant devices' }
Write-Output $compliant

[PSCustomObject]@{ RjTableTitle = 'Non-compliant devices' }
Write-Output $nonCompliant
```

{% hint style="warning" %}
**テーブル タイトルは 31 文字以内にしてください。** **Excel にエクスポート** はテーブル タイトルをワークシート名として使います。Excel が受け付けるのは、1〜31 文字で、次のいずれも含まない名前だけです `\ / ? * [ ] :` 、またアポストロフィで始まったり終わったりしてはいけません。たとえば、次のような長いタイトルは `Disabled users with a shared mailbox` （36 文字）ではエクスポートが失敗し、 *「データの読み込み中にエラーが発生しました: sheetName 'Disabled users with a shared mailbox' は無効です - 文字数は 1 以上 31 以下でなければなりません」*.

というエラーになります。この制限には、グループ名や日付のような実行時に挿入される値も含まれます。短くて意味のあるタイトルを選び、runbook も [Export-RjRbXlsx](/ja/dev-reference/report-functions/export-rjrbxlsx.md#worksheet-names)で Excel ファイルを書き出す場合は、テーブルと対応するワークシートに同じ名前を使用してください。
{% endhint %}

## 動作と制限

### アーカイブ済みジョブ

Output Data は実行中のジョブでのみ利用できます。アーカイブ済みジョブでは *「アーカイブ済みの実行から構造化データは取得できません。」* が表示されます。これらの結果はコンソール タブから読む必要があります。 [Runbook Logs](/ja/zi-dong-hua/runbooks/runbook-logs.md) 最近のジョブ ログとアーカイブ済みジョブ ログの違いについて参照してください。

### 構造化出力のない runbook

*「この runbook から構造化出力データはありません。」* は、この runbook から表形式のデータが出力されなかったことを意味します。メッセージに情報アイコンが付いている場合、runbook はデータではなく PowerShell のフォーマット レコードを送信しています — 参照: [整形済みテキストではなくオブジェクトを出力する](#emit-objects-not-formatted-text).

### 単一値

単一のプレーン値 — 状態文字列やカウントなど — を出力する runbook では、その値は Console タブのテキスト行として保持されます。テーブルになるのはオブジェクトだけなので、進行状況や状態メッセージがそれぞれ 1 行のテーブルになることはありません。

## 関連項目

* [Runbook Job Details](/ja/zi-dong-hua/runbooks/runbook-logs/runbook-job-details.md) — Console と Output Data タブを備えたジョブページ。
* [Export-RjRbXlsx](/ja/dev-reference/report-functions/export-rjrbxlsx.md) — 同じオブジェクトを、ポータル外へ配布するためのスタイル付き Excel ブックに書き出します。
* [Send-RjRbReportEmail](/ja/dev-reference/report-functions/send-rjrbreportemail.md) — レポート結果を管理者にメールで配信します。
* [Runbook とのやり取り](/ja/dev-reference/interacting-with-runbooks.md) — RealmJoin API を通じてジョブ出力をプログラムから読み取ります。


---

# 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/dev-reference/runbook-output-data.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.
