You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ScriptRunner控制台编写代码统计指定Confluence空间页面信息?

在Confluence ScriptRunner控制台统计空间页面信息的实现方案

你可以通过Groovy脚本调用Confluence核心API来实现需求,以下是可直接在ScriptRunner控制台运行的代码:

import com.atlassian.confluence.pages.Page
import com.atlassian.confluence.spaces.SpaceManager
import com.atlassian.sal.api.component.ComponentLocator
import com.atlassian.user.UserManager
import java.text.SimpleDateFormat

// 替换为目标空间的Key(空间Key可在空间URL或设置中查看)
def targetSpaceKey = "SPACE_KEY"
// 自定义日期输出格式,可根据需求调整
def dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")

// 获取Confluence内置服务实例
def spaceManager = ComponentLocator.getComponent(SpaceManager)
def userManager = ComponentLocator.getComponent(UserManager)

// 定位目标空间
def space = spaceManager.getSpace(targetSpaceKey)
if (!space) {
    println "未找到Key为${targetSpaceKey}的空间,请检查空间Key是否正确"
    return
}

// 输出指定格式的表头
println "PageName;UserPageCreatorID;UserPageCreatorFullName;LastModificationDate"

// 递归遍历空间下所有页面(包含子页面),若只需根页面将参数改为false
space.getPages(true).each { Page page ->
    // 处理创建者信息,兼容创建者账号已删除的情况
    def creator = userManager.getUser(page.creatorName)
    def creatorId = creator ? creator.name : "未知ID"
    def creatorFullName = creator ? creator.fullName : "未知用户"
    
    // 处理最后修改日期,兼容无修改记录的页面
    def lastModifiedDate = page.lastModificationDate ? dateFormat.format(page.lastModificationDate) : "无修改记录"
    
    // 按要求格式输出单行数据
    println "${page.title};${creatorId};${creatorFullName};${lastModifiedDate}"
}

关键说明

  • 必须先将代码中的SPACE_KEY替换为目标空间的实际Key(可从空间URL或空间设置页面获取)
  • space.getPages(true)中的true表示递归获取所有层级的子页面,如果只需要统计空间根目录下的页面,将参数改为false即可
  • 日期格式可通过修改SimpleDateFormat的参数调整,例如改为"yyyy-MM-dd"仅输出日期部分
  • 代码中做了空值兼容处理,避免因创建者账号删除或页面无修改记录导致脚本报错

内容的提问来源于stack exchange,提问作者منى

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 02:16:59