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

如何通过JIRA Rest API获取跨项目迁移的问题键列表(含新旧键)

获取JIRA Cloud迁移问题的新旧键列表(PowerShell+REST API实现)

核心思路

JIRA问题跨项目迁移后,原问题和新问题会自动生成**"is moved to"/"is moved from"**类型的关联链接。我们可以通过JQL筛选出这类带迁移关联的问题,再调用REST API提取对应的新旧问题键。

步骤1:用JQL定位迁移关联的问题

你可以从两个方向构建JQL查询:

  • 查原项目(BTM)中所有迁移到SPB的问题:
    project = BTM AND issueLinkType = "is moved to" AND linkedIssue in project(SPB)
    
  • 查目标项目(SPB)中所有从BTM迁移过来的问题:
    project = SPB AND issueLinkType = "is moved from" AND linkedIssue in project(BTM)
    

步骤2:PowerShell脚本实现数据拉取

以下脚本以查询BTM迁移到SPB的问题为例,直接输出旧问题键(BTM开头)和对应的新问题键(SPB开头),也可导出为CSV文件:

# 配置JIRA Cloud基础信息
$jiraDomain = "your-domain.atlassian.net"
$email = "your-admin-email@example.com"
$apiToken = "your-api-token" # 从Atlassian账户安全设置中生成专属API Token
$sourceProject = "BTM"
$targetProject = "SPB"

# 构建认证请求头
$base64Auth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $email, $apiToken)))
$headers = @{
    "Authorization" = "Basic $base64Auth"
    "Content-Type" = "application/json"
}

# 编码JQL查询语句
$jql = "project = $sourceProject AND issueLinkType = `""is moved to"`" AND linkedIssue in project($targetProject)"
$encodedJql = [Uri]::EscapeDataString($jql)

# 分页拉取所有结果(JIRA API默认每页最多100条)
$startAt = 0
$maxResults = 100
$allIssues = @()

do {
    $apiUrl = "https://$jiraDomain/rest/api/3/search?jql=$encodedJql&startAt=$startAt&maxResults=$maxResults&fields=key,issuelinks"
    $response = Invoke-RestMethod -Uri $apiUrl -Headers $headers -Method Get
    $allIssues += $response.issues
    $startAt += $maxResults
} while ($response.total -gt $startAt)

# 提取并整理新旧问题键数据
$migrationRecords = foreach ($issue in $allIssues) {
    $oldIssueKey = $issue.key
    # 筛选"is moved to"类型的链接,提取目标问题键
    $newIssueKey = ($issue.fields.issuelinks | Where-Object { $_.type.name -eq "is moved to" }).outwardIssue.key
    [PSCustomObject]@{
        旧问题键 = $oldIssueKey
        新问题键 = $newIssueKey
    }
}

# 控制台输出结果(可取消注释导出为CSV)
$migrationRecords | Format-Table -AutoSize
# $migrationRecords | Export-Csv -Path "JIRA-Migration-List.csv" -Encoding UTF8 -NoTypeInformation

关键注意事项

  1. API Token生成:登录Atlassian账户后,进入「安全设置」→「API token」生成专属token,禁止使用账户密码直接认证。
  2. 反向查询调整:如果需要从SPB反向查询BTM的源问题,只需修改JQL为SPB项目的查询语句,脚本中链接类型改为"is moved from",提取inwardIssue.key即可。
  3. 权限验证:确保你的管理员账号有权限访问两个项目的问题及关联链接字段,否则会出现数据遗漏或权限报错。

内容的提问来源于stack exchange,提问作者Anik Mallick

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 10:22:16