使用gspread操作Google Sheets报错:AttributeError: 'Worksheet'无get_addr_int属性
解决gspread报错:AttributeError: 'Worksheet' object has no attribute 'get_addr_int'
我之前在升级gspread版本后也碰到过一模一样的错误,大概率是你用的gspread版本和参考的代码文档不匹配导致的!
问题根源
在gspread的旧版本(比如v4.x及更早)中,Worksheet对象确实包含get_addr_int方法,同时也支持直接调用worksheet.rowcol_to_a1()来转换行列为A1格式。但从gspread v5.x版本开始,官方把这些单元格地址转换的工具方法统一移到了gspread.utils模块中,Worksheet对象不再自带这些方法,所以直接调用就会触发AttributeError。
具体解决办法
1. 使用新版本的正确调用方式
如果你用的是gspread v5.x及以上版本,需要从utils模块导入并调用方法:
# 先导入utils模块 from gspread import utils # 转换行列为A1格式(示例:第2行第3列 → C2) a1_address = utils.rowcol_to_a1(row=2, col=3) print(a1_address) # 输出 "C2"
之后你就可以用这个A1地址来操作工作表,比如读取或修改单元格:
# 假设worksheet是你的Worksheet对象 cell_value = worksheet.acell(a1_address).value worksheet.update(a1_address, "新的内容")
2. 降级gspread版本(不推荐,除非项目依赖旧代码)
如果你的代码大量依赖旧版本的get_addr_int或worksheet.rowcol_to_a1()调用,不想修改代码的话,可以降级到gspread v4.x版本:
pip install gspread==4.0.1
降级后就可以继续使用旧的调用方式:
# 旧版本用法示例 a1_address = worksheet.get_addr_int(2, 3) # 或者 a1_address = worksheet.rowcol_to_a1(2, 3)
3. 检查代码中的误用
注意不要把utils的方法当成Worksheet对象的属性调用,比如以下写法是错误的:
# 错误写法! worksheet.utils.rowcol_to_a1(2, 3)
一定要直接调用utils模块下的函数。
内容的提问来源于stack exchange,提问作者user9486913
相关产品推荐
相关产品推荐

