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

Python脚本整合Jira爬取与Google Sheets写入仅存最后一条数据求助

嘿,我来帮你解决这个只写入最后一条数据的问题!

问题根源

你遇到的情况几乎可以肯定是:在循环处理Jira数据时,每次都把数据写入到Google Sheets的同一个位置,导致前面的所有数据都被最后一条覆盖了。单独爬取能拿到50条,说明Jira部分没问题,就是写入 Sheets 的逻辑没处理好。

解决方案

我给你两种可行的修改思路,结合你的代码来调整:

方案1:先收集所有数据,一次性写入(推荐,效率更高)

这种方式会先把所有Jira数据存到一个列表里,再一次性批量写入到Sheets,减少API调用次数,也不会出现覆盖问题。

修改后的完整代码示例:

# coding=utf-8
from jira.client import JIRA
import gspread
from oauth2client.service_account import ServiceAccountCredentials

# 补充完整权限范围,避免权限不足
SCOPES = ["https://spreadsheets.google.com/feeds", "https://www.googleapis.com/auth/drive"]
credentials = ServiceAccountCredentials.from_json_keyfile_name("你的密钥文件名.json", SCOPES)
connection = gspread.authorize(credentials)

# 打开你的目标表格和工作表(这里用sheet1,你可以改成实际的工作表名)
target_sheet = connection.open("你的Google Sheets表格名称").sheet1

# Jira连接配置
options = {'server': 'https://jira.blank.com/'}
# 补充Jira认证(替换成你的账号和API token/密码)
jira = JIRA(options, basic_auth=("你的Jira账号", "你的认证密钥"))

# 获取50条Jira数据(替换成你的实际JQL查询)
jira_issues = jira.search_issues("你的JQL查询语句", maxResults=50)

# 1. 先收集所有要写入的数据
all_records = []
# 先添加表头(如果你的表格还没有表头的话)
all_records.append(["Issue编号", "标题", "状态"])  # 替换成你需要的字段
# 遍历Jira数据,提取字段
for issue in jira_issues:
    # 这里替换成你实际要爬取的字段
    single_record = [
        issue.key,
        issue.fields.summary,
        issue.fields.status.name
    ]
    all_records.append(single_record)

# 2. 一次性写入所有数据
# 如果表格已有表头,就从A2开始写:target_sheet.update("A2", all_records[1:])
target_sheet.update("A1", all_records)

方案2:逐行追加写入(适合需要实时更新的场景)

如果不想一次性收集数据,可以每次循环时找到表格的下一行,把数据插入进去,避免覆盖:

# 前面的连接代码和方案1一致,省略...

# 获取当前表格已有的行数,下一行就是要写入的位置
next_write_row = len(target_sheet.get_all_values()) + 1

for issue in jira_issues:
    single_record = [
        issue.key,
        issue.fields.summary,
        issue.fields.status.name
    ]
    # 插入到下一行
    target_sheet.insert_row(single_record, next_write_row)
    # 行号自增,准备写下一条
    next_write_row += 1

关键注意点

  • 确保你的SCOPES包含https://www.googleapis.com/auth/drive,否则可能出现Sheets权限不足的问题
  • 替换代码中所有带你的xxx的内容,比如密钥文件名、表格名称、Jira认证信息、JQL查询
  • 如果你的表格已经有表头,记得调整写入的起始行(比如方案1从A2开始,方案2的next_write_row要从表头下一行开始)

内容的提问来源于stack exchange,提问作者Leap Head

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:12:39