2
1
0

Confluence でスペース内に存在する現在のページ数を確認したいのですが
何か方法はありますでしょうか。

    Commentコメントを追加...

    2 回答

    1.  
      3
      2
      1

      ユーザーマクロを作成して取得する方法が以下の記事にありました。

      ゴミ箱や履歴等も含まれる内容のようだったので、
      現在のページのみ取得する場合は
      以下のような内容にすれば取得できたように思えます。

      ## @noparams
      
      #set ($containerManagerClass = $action.class.forName("com.atlassian.spring.container.ContainerManager"))
      #set ($getInstanceMethod = $containerManagerClass.getDeclaredMethod("getInstance", null))
      #set ($containerManager = $getInstanceMethod.invoke(null, null))
      #set ($containerContext = $containerManager.containerContext)
      
      #set ($spaceManager = $containerContext.getComponent("spaceManager"))
      <h2>List of Spaces</h2>
      <table class="confluenceTable">
      <tr>
        <th class="confluenceTh">Space Name</th>
        <th class="confluenceTh">Page Count</th>
        <th class="confluenceTh">Last Modified</th>
      </tr>
      #foreach ($space in $spaceManager.getAllSpaces())
        #if ($space.isGlobal())
          #set ($spacePages = $pageManager.getPages($space, true))
          #set ($pageCount = $spacePages.size())
        <tr>
          <td>
            <a href="$req.contextPath/display/$space.getKey()">$space.getName()</a>
          </td>
          <td>
            $pageCount
          </td>
          <td>
            $space.getLastModificationDate()
            <!–$space.getLastModifierName()–>
          </td>
        </tr>
        #end
      #end
      </table>

      後は DB から取得する方法も記載されていました。

      こちらも「現在」の数ではないようだったので
      以下のクエリにすることで取得できたように思えます。

      select count(CONTENTID) as "number of pages", SPACES.SPACENAME from CONTENT
      join SPACES on CONTENT.SPACEID = SPACES.SPACEID
      where CONTENT.SPACEID is not null
      and CONTENT.PREVVER is null
      and CONTENT.CONTENTTYPE = 'PAGE'
      and CONTENT.content_status = 'current'
      group by SPACES.SPACENAME
      order by "number of pages" desc;
      1. 樋口晃

        便利なマクロのご紹介、ありがとうございます。

        ページが多い場合処理に負荷がかかってしまう事も有るかと思いますので、こちらを利用する場合はマクロの利用を管理者に限定する設定にする事が良いかと思います。

      2. Shuzaburo Doba

        ありがとうございます!

        確かに負荷のことも考えられますね...

        検討してみます!

      Commentコメントを追加...
    2.  
      3
      2
      1

      正確に数えられるか不明ですが、スペースツール→コンテンツルール→エクスポートから HTML 形式でエクスポートして html ファイルを数えるという方法はいかがでしょうか。

      1. Shuzaburo Doba

        ありがとうございます!

        いただいた方法でページ数が取得できました!

      Commentコメントを追加...