如何在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,提问作者منى
相关产品推荐
相关产品推荐

