PowerShellでAtlassian Confluence APIを使いテンプレートページを一括作成する方法

Confluence APIをPowerShellで活用し、テンプレートページを一括作成する方法について解説します。

Atlassian Confluenceは、ドキュメント管理やナレッジ共有のための強力なプラットフォームですが、多くのページを手動で作成するのは非効率です。特に、同じフォーマットで複数のページを作成する必要がある場合、APIを利用することで作業を自動化し、業務効率を大幅に向上させることができます。

本記事では、PowerShellを使用してConfluence APIを呼び出し、テンプレートページを一括作成する方法について詳しく解説します。具体的には、以下の内容をカバーします。

  • Confluence APIの概要:APIの基本的な仕様と利用できる機能
  • 認証とアクセス権の設定:APIを使用するための認証方法と権限設定
  • PowerShell環境の準備:必要なツールのセットアップと前提条件
  • APIをPowerShellで呼び出す方法:実際のスクリプト例を紹介
  • テンプレートページの構造と作成手順:ページの構成要素を理解し、APIで作成
  • 一括作成のためのスクリプト:複数のページを一括作成する方法
  • エラーハンドリングとデバッグ:API実行時のトラブルシューティング
  • 応用例と実用シナリオ:実際の業務で活用できる具体例

これらの情報を通じて、Confluence APIを活用し、PowerShellを用いたページ作成の自動化を習得できます。業務の効率化や作業の標準化に役立つスクリプトの活用方法を学び、Confluenceの運用をさらに強化しましょう。

目次
  1. Atlassian Confluence APIの概要
    1. Confluence APIとは
    2. REST APIのエンドポイント
    3. レスポンスの例
    4. APIを利用するメリット
  2. API認証とアクセス権の設定
    1. 認証方式
    2. アクセス権の設定
    3. 認証情報のセキュリティ対策
  3. PowerShell環境の準備
    1. PowerShellのバージョン確認
    2. 必要なモジュールのインストール
    3. 環境変数の設定(APIトークンの安全な保存)
    4. 動作確認(テスト用APIリクエスト)
    5. まとめ
  4. Confluence APIをPowerShellで呼び出す方法
    1. APIリクエストの基本
    2. Confluenceのページ一覧を取得する(GETリクエスト)
    3. Confluenceに新しいページを作成する(POSTリクエスト)
    4. 作成したページの確認
    5. APIリクエストの注意点
    6. まとめ
  5. テンプレートページの構造と作成手順
    1. Confluenceページの基本構造
    2. テンプレートページを活用するメリット
    3. PowerShellを使ったテンプレートページの作成
    4. カスタマイズ可能なテンプレートの作成
    5. まとめ
  6. 一括作成のためのスクリプト作成
    1. 一括作成のメリット
    2. 一括作成用のPowerShellスクリプト
    3. CSVからページデータを読み込む方法
    4. エラーハンドリングの追加
    5. 実行結果のログ保存
    6. まとめ
  7. エラーハンドリングとデバッグ方法
    1. よくあるエラーと対処法
    2. PowerShellでのエラーハンドリング
    3. APIレスポンスの詳細をログに記録する
    4. APIレスポンスを詳細に確認する
    5. デバッグ時のポイント
    6. まとめ
  8. 実用例と応用シナリオ
    1. 業務での活用シナリオ
    2. 応用スクリプトのカスタマイズ
    3. まとめ
  9. まとめ

Atlassian Confluence APIの概要


Atlassian Confluence APIは、Confluence内のコンテンツを操作するためのRESTful APIを提供します。これにより、手作業では時間がかかるページの作成や管理をスクリプトを用いて自動化できます。

Confluence APIとは


Confluence APIは、外部ツールやスクリプトからConfluenceのデータを取得・更新・削除するためのインターフェースを提供します。主に以下の機能が利用可能です。

  • ページの作成・編集・削除
  • ページやスペースの一覧取得
  • コメントの追加・取得
  • 添付ファイルのアップロード・管理
  • ユーザーやグループの管理

REST APIのエンドポイント


ConfluenceのREST APIは、以下の形式でエンドポイントを提供します。

https://{confluence_base_url}/rest/api/{resource}

例えば、ページ一覧を取得するには以下のようなリクエストを送ります。

GET https://your-confluence-instance.atlassian.net/wiki/rest/api/content

レスポンスの例


以下は、ページの一覧を取得した際のJSONレスポンス例です。

{
    "results": [
        {
            "id": "12345",
            "title": "サンプルページ",
            "type": "page",
            "space": {
                "key": "TEST"
            },
            "body": {
                "storage": {
                    "value": "<p>ページ内容</p>",
                    "representation": "storage"
                }
            }
        }
    ],
    "size": 1
}

APIを利用するメリット


Confluence APIを利用することで、以下のようなメリットがあります。

  • 作業の自動化:手動でのページ作成作業を削減できる。
  • 大量データの一括処理:数十、数百のページを一度に作成・更新可能。
  • 一貫性の確保:テンプレートを利用して統一フォーマットのページを作成可能。

本記事では、このConfluence APIをPowerShellから活用し、テンプレートページを効率的に作成する手法を詳しく解説していきます。

API認証とアクセス権の設定


Confluence APIを使用するには、適切な認証方法とアクセス権の設定が必要です。本章では、APIの認証方式と権限設定の手順について詳しく解説します。

認証方式


Confluence APIでは、認証が必要なリクエストを送信する際に、以下の認証方法を使用します。

1. Basic認証(ユーザー名とAPIトークン)


Atlassianでは、パスワード認証の代わりにAPIトークンを使用したBasic認証を推奨しています。以下の手順でAPIトークンを取得できます。

APIトークンの取得手順

  1. Atlassian API Token Management にアクセス
  2. 「Create API token」をクリック
  3. 任意の説明を入力し、「Create」をクリック
  4. 生成されたトークンをコピー(このトークンは後で使用します)

PowerShellでBasic認証を設定する
APIリクエスト時に、ユーザー名とAPIトークンをBase64エンコードして認証ヘッダーを作成します。

$Username = "your-email@example.com"
$ApiToken = "your-api-token"
$EncodedAuth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$Username`:$ApiToken"))

$Headers = @{
    "Authorization" = "Basic $EncodedAuth"
    "Content-Type"  = "application/json"
}

2. OAuth 2.0認証


企業向けの大規模環境では、OAuth 2.0認証を利用することも可能です。これは、ユーザーに代わってAPIを実行するためのトークンを取得する方式です。OAuth 2.0の設定には、Atlassian CloudのOAuthアプリを作成する必要がありますが、本記事では基本的なBasic認証を使用します。

アクセス権の設定


APIを利用するためには、Confluenceの適切な権限が必要です。以下の権限を持つユーザーアカウントを使用してください。

  1. ページの作成・編集権限(Create, Edit)
  2. スペースの管理権限(Manage Space)
  3. REST APIアクセスが許可されていること

権限設定は、Confluence管理画面の「スペース設定」→「権限」から変更できます。

認証情報のセキュリティ対策

  • APIトークンはソースコードに直接書かず、環境変数や外部ファイルに保存する
  • 共有PCではトークンの保存を避け、使用後は必ず削除
  • 必要最小限の権限を持つアカウントをAPIアクセスに使用する

適切な認証と権限設定を行うことで、PowerShellを使ったConfluence APIの呼び出しを安全に実行できるようになります。次章では、PowerShellの環境設定について解説します。

PowerShell環境の準備


Confluence APIをPowerShellで利用するには、適切な開発環境をセットアップする必要があります。本章では、必要なツールのインストールと基本的な環境設定について解説します。

PowerShellのバージョン確認


PowerShellのバージョンによっては、一部のコマンドやライブラリが利用できない場合があります。まず、現在のバージョンを確認します。

$PSVersionTable.PSVersion

PowerShell 5.1以上、またはPowerShell 7.xの利用を推奨します。PowerShell 7.xを使用することで、最新の機能を活用できます。
PowerShell 7.xが必要な場合は、Microsoft公式サイト からダウンロードしてください。

必要なモジュールのインストール


PowerShellからHTTPリクエストを送信するために、Invoke-RestMethod または Invoke-WebRequest コマンドレットを使用します。これらはデフォルトでインストールされていますが、最新のモジュールを使用するために以下のコマンドで更新できます。

Install-Module -Name PowerShellGet -Force -AllowClobber
Update-Module -Name PowerShellGet

また、JSONデータの処理を簡単にするために、PSReadLine モジュールを最新バージョンに更新することを推奨します。

Install-Module -Name PSReadLine -Force -SkipPublisherCheck

環境変数の設定(APIトークンの安全な保存)


APIトークンをスクリプト内に直接記述すると、セキュリティリスクが高まるため、環境変数に保存する方法を推奨します。

[System.Environment]::SetEnvironmentVariable("CONFLUENCE_API_TOKEN", "your-api-token", "User")

スクリプト内では、以下のように環境変数を利用できます。

$ApiToken = [System.Environment]::GetEnvironmentVariable("CONFLUENCE_API_TOKEN", "User")

動作確認(テスト用APIリクエスト)


環境が正しく設定されたか確認するために、Confluence APIへ簡単なリクエストを送信します。

$Username = "your-email@example.com"
$ApiToken = [System.Environment]::GetEnvironmentVariable("CONFLUENCE_API_TOKEN", "User")
$EncodedAuth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$Username`:$ApiToken"))

$Headers = @{
    "Authorization" = "Basic $EncodedAuth"
    "Content-Type"  = "application/json"
}

$ConfluenceUrl = "https://your-confluence-instance.atlassian.net/wiki/rest/api/content"

$response = Invoke-RestMethod -Uri $ConfluenceUrl -Headers $Headers -Method Get
$response.results

レスポンスとしてページ情報が取得できれば、環境設定は完了です。

まとめ

  • PowerShell 5.1以上または7.xを使用する
  • 必要なモジュール(PowerShellGet、PSReadLine)を更新
  • APIトークンを環境変数に保存してセキュリティを強化
  • Invoke-RestMethod を使用してAPI接続をテスト

次章では、PowerShellを用いてConfluence APIを呼び出し、ページを作成する方法を解説します。

Confluence APIをPowerShellで呼び出す方法


PowerShellを使用してConfluence APIを呼び出し、ページの作成や管理を行う方法を解説します。ここでは、基本的なGETリクエストとPOSTリクエストの送信方法について説明します。

APIリクエストの基本


Confluence APIを呼び出すためには、Invoke-RestMethod コマンドレットを使用します。これはREST APIとやり取りする際に便利なコマンドで、データの取得や送信を簡単に実行できます。

Confluenceのページ一覧を取得する(GETリクエスト)


まず、Confluenceに保存されているページ一覧を取得する基本的なリクエストを実行してみましょう。

$Username = "your-email@example.com"
$ApiToken = [System.Environment]::GetEnvironmentVariable("CONFLUENCE_API_TOKEN", "User")
$EncodedAuth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$Username`:$ApiToken"))

$Headers = @{
    "Authorization" = "Basic $EncodedAuth"
    "Content-Type"  = "application/json"
}

$ConfluenceUrl = "https://your-confluence-instance.atlassian.net/wiki/rest/api/content"

$response = Invoke-RestMethod -Uri $ConfluenceUrl -Headers $Headers -Method Get
$response.results | Format-Table id, title -AutoSize

このスクリプトを実行すると、ページIDとタイトルの一覧が表示されます。

Confluenceに新しいページを作成する(POSTリクエスト)


次に、PowerShellを使って新しいページを作成する方法を紹介します。

$SpaceKey = "TEST"  # Confluenceのスペースキーを指定
$Title = "新しいページ"
$BodyContent = "<p>これはPowerShellを使用して作成したページです。</p>"

$PageData = @{
    "type"  = "page"
    "title" = $Title
    "space" = @{
        "key" = $SpaceKey
    }
    "body" = @{
        "storage" = @{
            "value" = $BodyContent
            "representation" = "storage"
        }
    }
} | ConvertTo-Json -Depth 10

$CreatePageUrl = "https://your-confluence-instance.atlassian.net/wiki/rest/api/content"

$response = Invoke-RestMethod -Uri $CreatePageUrl -Headers $Headers -Method Post -Body $PageData
$response

このスクリプトを実行すると、新しいページがConfluenceに作成されます。

作成したページの確認


作成したページのIDがレスポンスで返されるので、URLを確認することで実際にページが作成されたか確認できます。

Write-Output "作成したページのURL: https://your-confluence-instance.atlassian.net/wiki/spaces/$SpaceKey/pages/$($response.id)"

APIリクエストの注意点

  1. ページの重複回避:同じタイトルのページがある場合はエラーになることがあります。
  2. スペースキーの指定:ページを作成するスペースを間違えないように注意する。
  3. API制限:Confluence CloudではAPIリクエストの制限があるため、大量のリクエストを送る場合は注意する。

まとめ

  • Invoke-RestMethod を使用してGETおよびPOSTリクエストを送信
  • Confluenceのページ一覧を取得する方法を学ぶ
  • PowerShellを使って新しいページを作成するスクリプトを実装
  • 作成したページのURLを確認し、適切に管理

次章では、作成するページの構造とテンプレートを活用した方法について解説します。

テンプレートページの構造と作成手順


Confluence APIを利用してページを作成する際、テンプレートを活用することで、フォーマットを統一し、作業効率を向上させることができます。本章では、テンプレートページの構造と、PowerShellを用いたテンプレートを利用したページ作成手順を解説します。

Confluenceページの基本構造


Confluenceのページは、以下のような要素で構成されています。

  1. タイトル(title):ページの見出しとなる部分
  2. スペース(space):ページが属するスペースを指定
  3. ページ本文(body):HTMLまたはWikiマークアップ形式で記述
  4. 親ページ(ancestors)(オプション):作成するページの親ページを指定
  5. ページの種類(type):通常は "page" を指定

以下は、Confluenceのページ構造のJSON形式の例です。

{
    "type": "page",
    "title": "テンプレートページ",
    "space": {
        "key": "TEST"
    },
    "ancestors": [
        {
            "id": "12345"
        }
    ],
    "body": {
        "storage": {
            "value": "<p>ここにテンプレート内容を記述</p>",
            "representation": "storage"
        }
    }
}

テンプレートページを活用するメリット

  • 統一感のあるページ作成:チーム内で一貫したフォーマットを維持できる
  • 作業の効率化:手動でページを作成する手間を省く
  • 入力ミスの削減:事前にフォーマットが決まっているため、必要な情報を確実に記載できる

PowerShellを使ったテンプレートページの作成


以下のスクリプトを使用すると、PowerShellでテンプレートページを作成できます。

$Username = "your-email@example.com"
$ApiToken = [System.Environment]::GetEnvironmentVariable("CONFLUENCE_API_TOKEN", "User")
$EncodedAuth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$Username`:$ApiToken"))

$Headers = @{
    "Authorization" = "Basic $EncodedAuth"
    "Content-Type"  = "application/json"
}

$SpaceKey = "TEST"
$Title = "新しいテンプレートページ"
$ParentPageId = "12345"  # 親ページのIDを指定

$TemplateContent = @"
<h1>会議議事録</h1>
<h2>日時</h2>
<p>YYYY/MM/DD HH:MM</p>
<h2>参加者</h2>
<ul>
    <li>参加者1</li>
    <li>参加者2</li>
</ul>
<h2>議題</h2>
<p>ここに議題を記入</p>
<h2>決定事項</h2>
<p>ここに決定事項を記入</p>
"@

$PageData = @{
    "type"  = "page"
    "title" = $Title
    "space" = @{
        "key" = $SpaceKey
    }
    "ancestors" = @(@{"id" = $ParentPageId})
    "body" = @{
        "storage" = @{
            "value" = $TemplateContent
            "representation" = "storage"
        }
    }
} | ConvertTo-Json -Depth 10

$CreatePageUrl = "https://your-confluence-instance.atlassian.net/wiki/rest/api/content"

$response = Invoke-RestMethod -Uri $CreatePageUrl -Headers $Headers -Method Post -Body $PageData
Write-Output "ページが作成されました: https://your-confluence-instance.atlassian.net/wiki/spaces/$SpaceKey/pages/$($response.id)"

カスタマイズ可能なテンプレートの作成


テンプレートを動的に変更したい場合は、PowerShellの変数を利用して、以下のように記述できます。

$MeetingDate = "2025/01/29 10:00"
$Participants = @("田中", "佐藤", "鈴木")
$Agenda = "今後のプロジェクト計画について"

$TemplateContent = @"
<h1>会議議事録</h1>
<h2>日時</h2>
<p>$MeetingDate</p>
<h2>参加者</h2>
<ul>
$(($Participants | ForEach-Object { "<li>$_</li>" }) -join "`n")
</ul>
<h2>議題</h2>
<p>$Agenda</p>
"@

このように変数を活用することで、APIリクエストのたびに異なる内容を設定することが可能です。

まとめ

  • Confluenceのページ構造を理解し、JSON形式でデータを送信する
  • テンプレートを活用し、統一感のあるページを作成する
  • PowerShellスクリプトを用いて、動的にテンプレートを変更する
  • APIを活用してページを作成し、業務効率化を実現

次章では、複数のページを一括作成する方法について解説します。

一括作成のためのスクリプト作成


PowerShellを活用すれば、複数のConfluenceページを一括作成することが可能です。本章では、同じフォーマットで大量のページを自動生成するスクリプトを作成し、業務の効率化を実現する方法を解説します。

一括作成のメリット

  • 業務の効率化:手作業によるページ作成の手間を削減
  • フォーマットの統一:全てのページを一貫した構成で作成可能
  • ヒューマンエラーの削減:入力ミスを防ぎ、正確な情報を登録

一括作成用のPowerShellスクリプト


以下のスクリプトでは、複数のページを一括作成します。ExcelやCSVで管理されているデータを読み込み、自動でConfluenceにページを作成する流れです。

# ユーザー認証情報
$Username = "your-email@example.com"
$ApiToken = [System.Environment]::GetEnvironmentVariable("CONFLUENCE_API_TOKEN", "User")
$EncodedAuth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$Username`:$ApiToken"))

$Headers = @{
    "Authorization" = "Basic $EncodedAuth"
    "Content-Type"  = "application/json"
}

# Confluenceの情報
$SpaceKey = "TEST"
$ParentPageId = "12345"  # 親ページのIDを指定

# 一括作成するページ情報リスト(例)
$Pages = @(
    @{ Title = "プロジェクト計画"; Content = "<p>プロジェクトの概要</p>" },
    @{ Title = "進捗管理"; Content = "<p>スケジュールの詳細</p>" },
    @{ Title = "リスク分析"; Content = "<p>リスクの評価と対策</p>" }
)

# ページを順番に作成
foreach ($Page in $Pages) {
    $PageData = @{
        "type"  = "page"
        "title" = $Page.Title
        "space" = @{
            "key" = $SpaceKey
        }
        "ancestors" = @(@{"id" = $ParentPageId})
        "body" = @{
            "storage" = @{
                "value" = $Page.Content
                "representation" = "storage"
            }
        }
    } | ConvertTo-Json -Depth 10

    $CreatePageUrl = "https://your-confluence-instance.atlassian.net/wiki/rest/api/content"

    $response = Invoke-RestMethod -Uri $CreatePageUrl -Headers $Headers -Method Post -Body $PageData
    Write-Output "ページ作成完了: https://your-confluence-instance.atlassian.net/wiki/spaces/$SpaceKey/pages/$($response.id)"
}

CSVからページデータを読み込む方法


ページデータをCSVファイルで管理することで、スクリプトの汎用性を高めることができます。以下のスクリプトでは、pages.csv ファイルを読み込んで一括作成を行います。

CSVファイル(pages.csv)のフォーマット

Title,Content
プロジェクト計画,"<p>プロジェクトの概要</p>"
進捗管理,"<p>スケジュールの詳細</p>"
リスク分析,"<p>リスクの評価と対策</p>"

PowerShellスクリプト

# CSVを読み込む
$CsvPath = "C:\path\to\pages.csv"
$Pages = Import-Csv -Path $CsvPath

foreach ($Page in $Pages) {
    $PageData = @{
        "type"  = "page"
        "title" = $Page.Title
        "space" = @{
            "key" = $SpaceKey
        }
        "ancestors" = @(@{"id" = $ParentPageId})
        "body" = @{
            "storage" = @{
                "value" = $Page.Content
                "representation" = "storage"
            }
        }
    } | ConvertTo-Json -Depth 10

    $response = Invoke-RestMethod -Uri $CreatePageUrl -Headers $Headers -Method Post -Body $PageData
    Write-Output "ページ作成完了: https://your-confluence-instance.atlassian.net/wiki/spaces/$SpaceKey/pages/$($response.id)"
}

エラーハンドリングの追加


一括作成を行う際に、途中でAPIエラーが発生すると処理が中断される可能性があります。そのため、Try-Catch 構文を利用してエラーハンドリングを追加します。

foreach ($Page in $Pages) {
    Try {
        $PageData = @{
            "type"  = "page"
            "title" = $Page.Title
            "space" = @{
                "key" = $SpaceKey
            }
            "ancestors" = @(@{"id" = $ParentPageId})
            "body" = @{
                "storage" = @{
                    "value" = $Page.Content
                    "representation" = "storage"
                }
            }
        } | ConvertTo-Json -Depth 10

        $response = Invoke-RestMethod -Uri $CreatePageUrl -Headers $Headers -Method Post -Body $PageData
        Write-Output "ページ作成成功: https://your-confluence-instance.atlassian.net/wiki/spaces/$SpaceKey/pages/$($response.id)"
    } Catch {
        Write-Output "エラー発生: $($_.Exception.Message)"
    }
}

実行結果のログ保存


スクリプトの実行結果をファイルに保存することで、作成されたページの記録を残すことができます。

$LogFilePath = "C:\path\to\log.txt"
foreach ($Page in $Pages) {
    Try {
        $response = Invoke-RestMethod -Uri $CreatePageUrl -Headers $Headers -Method Post -Body $PageData
        $LogMessage = "成功: $($Page.Title) - https://your-confluence-instance.atlassian.net/wiki/spaces/$SpaceKey/pages/$($response.id)"
    } Catch {
        $LogMessage = "失敗: $($Page.Title) - エラー: $($_.Exception.Message)"
    }
    $LogMessage | Out-File -Append -FilePath $LogFilePath
}

まとめ

  • PowerShellを使って複数のConfluenceページを一括作成する方法を解説
  • 固定リストとCSVファイルのデータを活用したページ作成のスクリプトを紹介
  • Try-Catch によるエラーハンドリングを追加し、処理の安定性を向上
  • 実行結果をログファイルに保存し、管理しやすくする

次章では、エラーハンドリングとデバッグの方法について詳しく解説します。

エラーハンドリングとデバッグ方法


Confluence APIをPowerShellで呼び出す際、ネットワークエラーや認証失敗、リクエストフォーマットの不備など、さまざまなエラーが発生する可能性があります。本章では、エラーハンドリングとデバッグの方法について解説します。

よくあるエラーと対処法


Confluence APIを使用する際に発生しやすいエラーとその対策を紹介します。

エラーコード内容対応策
401 Unauthorized認証エラーAPIトークンや認証ヘッダーが正しく設定されているか確認
403 Forbiddenアクセス権エラーConfluenceの権限を確認し、適切なユーザー権限を付与
404 Not Found指定したページやスペースが存在しないスペースキーやページIDが正しいか確認
409 Conflictタイトル重複によるエラーページのタイトルが既に存在する場合、異なるタイトルを使用
500 Internal Server ErrorConfluence側の問題一時的なエラーの可能性があるため、時間をおいて再試行

PowerShellでのエラーハンドリング


PowerShellの Try-Catch 構文を活用して、API呼び出し時のエラーを処理する方法を紹介します。

Try {
    $response = Invoke-RestMethod -Uri $CreatePageUrl -Headers $Headers -Method Post -Body $PageData
    Write-Output "ページ作成成功: https://your-confluence-instance.atlassian.net/wiki/spaces/$SpaceKey/pages/$($response.id)"
} Catch {
    Write-Output "エラー発生: $($_.Exception.Message)"
}

Catch 内で $_.Exception.Message を出力することで、発生したエラーの詳細を確認できます。

APIレスポンスの詳細をログに記録する


エラー発生時のデバッグを容易にするため、APIレスポンスをログファイルに記録します。

$LogFilePath = "C:\path\to\api_log.txt"

Try {
    $response = Invoke-RestMethod -Uri $CreatePageUrl -Headers $Headers -Method Post -Body $PageData
    $LogMessage = "成功: $($Page.Title) - https://your-confluence-instance.atlassian.net/wiki/spaces/$SpaceKey/pages/$($response.id)"
} Catch {
    $ErrorMessage = $_.Exception.Message
    $LogMessage = "失敗: $($Page.Title) - エラー: $ErrorMessage"
}

$LogMessage | Out-File -Append -FilePath $LogFilePath

このスクリプトにより、成功・失敗のログを記録し、後からエラーの原因を特定しやすくなります。

APIレスポンスを詳細に確認する


エラーの原因が分からない場合、レスポンスの詳細を表示することでデバッグが容易になります。

Try {
    $response = Invoke-RestMethod -Uri $CreatePageUrl -Headers $Headers -Method Post -Body $PageData
    Write-Output "ページ作成成功"
} Catch {
    Write-Output "エラー発生"
    Write-Output "ステータスコード: $($_.Exception.Response.StatusCode.Value__)"
    Write-Output "レスポンス詳細: $($_.Exception.Response.GetResponseStream())"
}

デバッグ時のポイント

  1. 手動でリクエストを確認
  • Invoke-WebRequest を使用し、レスポンスヘッダーを確認
   Invoke-WebRequest -Uri $CreatePageUrl -Headers $Headers -Method Post -Body $PageData -Verbose

-Verbose を付けることで詳細なリクエスト情報を出力できます。

  1. APIエンドポイントが正しいかチェック
    Invoke-RestMethod を使い、APIの動作を確認
   Invoke-RestMethod -Uri "https://your-confluence-instance.atlassian.net/wiki/rest/api/content" -Headers $Headers -Method Get
  1. PowerShellのエラーモードを変更
    -ErrorAction Stop を指定し、エラー発生時に即座に停止させることで、エラーを特定しやすくする。
   Invoke-RestMethod -Uri $CreatePageUrl -Headers $Headers -Method Post -Body $PageData -ErrorAction Stop

まとめ

  • Try-Catch を活用してエラーハンドリングを実装
  • APIレスポンスをログファイルに記録し、デバッグしやすくする
  • Invoke-WebRequest-Verbose を活用し、リクエスト・レスポンスの詳細を確認
  • -ErrorAction Stop でエラーを即座に検出

次章では、実際の業務で活用できる応用シナリオについて解説します。

実用例と応用シナリオ


PowerShellを利用してConfluence APIを呼び出し、一括でページを作成するスクリプトを作成しました。本章では、実際の業務での活用シナリオや応用例について紹介します。

業務での活用シナリオ

1. プロジェクト管理の自動化


ユースケース: プロジェクトごとに決まったフォーマットのページを自動作成し、手間を削減。
活用方法:

  • プロジェクト開始時に、進捗管理・課題管理・スケジュールのページを自動生成
  • タイトルやプロジェクト名をPowerShellスクリプト内の変数として管理し、柔軟に変更
$ProjectName = "新規プロジェクト"
$Pages = @(
    @{ Title = "$ProjectName - 計画"; Content = "<h2>計画</h2><p>プロジェクトの計画内容</p>" },
    @{ Title = "$ProjectName - 進捗管理"; Content = "<h2>進捗</h2><p>進捗情報を記載</p>" },
    @{ Title = "$ProjectName - 課題管理"; Content = "<h2>課題</h2><p>課題一覧</p>" }
)

このようにして、プロジェクトごとに異なるページを簡単に作成できます。

2. 会議議事録の自動作成


ユースケース: 定例会議のたびにフォーマットを統一した議事録ページを作成。
活用方法:

  • PowerShellスクリプトで毎週の会議ページを作成し、日時や参加者を変数で管理
  • CSVやExcelから参加者リストを読み込んでページに自動入力
$MeetingDate = Get-Date -Format "yyyy/MM/dd"
$MeetingTitle = "定例会議 - $MeetingDate"
$MeetingContent = "<h1>議事録</h1><p>日時: $MeetingDate</p><h2>議題</h2><p>記入してください</p>"

$PageData = @{
    "type"  = "page"
    "title" = $MeetingTitle
    "space" = @{ "key" = "MEETING" }
    "body"  = @{ "storage" = @{ "value" = $MeetingContent; "representation" = "storage" } }
} | ConvertTo-Json -Depth 10

このスクリプトを実行することで、毎週の会議ページを自動生成できます。

3. エンジニア向けドキュメントのテンプレート管理


ユースケース: 開発者向けの技術仕様書や手順書を一括管理。
活用方法:

  • APIドキュメント、サーバー設定手順、トラブルシューティングガイドをテンプレート化
  • Confluenceの特定のスペースに必要なドキュメントを一括作成
$Documents = @(
    @{ Title = "APIガイド"; Content = "<h2>API仕様</h2><p>エンドポイントと使用方法</p>" },
    @{ Title = "サーバー設定"; Content = "<h2>環境構築手順</h2><p>設定ファイルの詳細</p>" }
)

4. タスク管理の自動化


ユースケース: チームのタスクをConfluenceページで管理し、新しいタスクを登録するたびにページを自動作成。
活用方法:

  • タスク管理ツール(JIRA, Trello, Asanaなど)からタスク情報を取得し、自動でConfluenceページを作成
  • CSVファイルやGoogleスプレッドシートからタスク一覧を読み込み、一括登録
$Tasks = Import-Csv -Path "C:\path\to\tasks.csv"
foreach ($Task in $Tasks) {
    $TaskTitle = "タスク: " + $Task.Title
    $TaskContent = "<h2>担当者</h2><p>$($Task.Assignee)</p><h2>期限</h2><p>$($Task.DueDate)</p>"
}

タスクごとにページを作成し、管理を簡単にします。

応用スクリプトのカスタマイズ


実際の業務では、以下のカスタマイズを行うことでさらに便利になります。

  1. メール通知の追加
  • PowerShellの Send-MailMessage を使用して、新しく作成されたページのURLを関係者に通知。
   Send-MailMessage -To "team@example.com" -Subject "新規ページ作成" -Body "新しいページが作成されました: $PageURL" -SmtpServer "smtp.example.com"
  1. ページの自動更新
  • 既存ページの内容を変更したい場合、PUTリクエストを使用してページを更新。
   Invoke-RestMethod -Uri "https://your-confluence-instance.atlassian.net/wiki/rest/api/content/$PageID" -Method Put -Body $UpdatedData
  1. スケジューリング(定期実行)
  • Task Scheduler を利用してスクリプトを毎日・毎週自動実行。
  • PowerShellスクリプトの実行スケジュールを作成し、定期的にページを作成・更新。
Start-Job -ScriptBlock { & "C:\path\to\script.ps1" }

まとめ

  • プロジェクト管理、会議議事録、技術ドキュメント、タスク管理などに応用可能
  • CSVやExcelを活用し、大量のページを効率的に作成
  • メール通知や定期実行などの追加カスタマイズで利便性を向上
  • Confluence APIとPowerShellを組み合わせて業務効率を最大化

次章では、本記事のまとめと、PowerShellによるConfluence APIの活用方法の振り返りを行います。

まとめ


本記事では、PowerShellを活用してAtlassian Confluence APIを呼び出し、テンプレートページを一括作成する方法について解説しました。

具体的には、以下の内容をカバーしました。

  • Confluence APIの概要: APIの基本仕様と利用できる機能
  • 認証とアクセス権の設定: APIトークンを利用した認証と権限管理の方法
  • PowerShell環境の準備: 必要なモジュールや環境変数の設定
  • APIをPowerShellで呼び出す方法: Invoke-RestMethod を用いたページの取得・作成
  • テンプレートページの作成: 統一フォーマットのページを自動作成するスクリプト
  • 一括作成のスクリプト: 複数のページを一括生成する方法(リスト・CSV対応)
  • エラーハンドリングとデバッグ: Try-Catch を活用したエラー処理とログ記録
  • 応用例と実用シナリオ: プロジェクト管理、会議議事録、技術ドキュメントなどの活用事例

PowerShellとConfluence APIを組み合わせることで、大量のページを効率的に作成し、業務の自動化が可能になります。今後の発展として、スクリプトのスケジューリング、外部データ(JIRAやTrello)との連携、ページの自動更新など、さらなるカスタマイズも検討できます。

本記事を参考に、PowerShellを活用したConfluenceの運用自動化をぜひ実践してみてください。

コメント

コメントする

目次
  1. Atlassian Confluence APIの概要
    1. Confluence APIとは
    2. REST APIのエンドポイント
    3. レスポンスの例
    4. APIを利用するメリット
  2. API認証とアクセス権の設定
    1. 認証方式
    2. アクセス権の設定
    3. 認証情報のセキュリティ対策
  3. PowerShell環境の準備
    1. PowerShellのバージョン確認
    2. 必要なモジュールのインストール
    3. 環境変数の設定(APIトークンの安全な保存)
    4. 動作確認(テスト用APIリクエスト)
    5. まとめ
  4. Confluence APIをPowerShellで呼び出す方法
    1. APIリクエストの基本
    2. Confluenceのページ一覧を取得する(GETリクエスト)
    3. Confluenceに新しいページを作成する(POSTリクエスト)
    4. 作成したページの確認
    5. APIリクエストの注意点
    6. まとめ
  5. テンプレートページの構造と作成手順
    1. Confluenceページの基本構造
    2. テンプレートページを活用するメリット
    3. PowerShellを使ったテンプレートページの作成
    4. カスタマイズ可能なテンプレートの作成
    5. まとめ
  6. 一括作成のためのスクリプト作成
    1. 一括作成のメリット
    2. 一括作成用のPowerShellスクリプト
    3. CSVからページデータを読み込む方法
    4. エラーハンドリングの追加
    5. 実行結果のログ保存
    6. まとめ
  7. エラーハンドリングとデバッグ方法
    1. よくあるエラーと対処法
    2. PowerShellでのエラーハンドリング
    3. APIレスポンスの詳細をログに記録する
    4. APIレスポンスを詳細に確認する
    5. デバッグ時のポイント
    6. まとめ
  8. 実用例と応用シナリオ
    1. 業務での活用シナリオ
    2. 応用スクリプトのカスタマイズ
    3. まとめ
  9. まとめ