Pygsheets append_table方法KeyError求助:仅能追加首行数据
问题:pygsheets追加多行数据到Google表格仅首行成功,后续行报KeyError: 'tableRange'
问题详情
- 脚本最后追加数据环节,仅能将
Rows_Cleaned的首行数据写入Google表格,后续行操作抛出KeyError: 'tableRange'错误 - 前序逻辑正常,可正确生成并打印
Rows_Cleaned列表,数据格式验证无误,使用update_row方法可正常操作该列表 - 用简化测试数据(如
Test_Data = [[123, 456,789],['test',123,'testing']])测试,仍出现相同错误 - 需求:将
Rows_Cleaned中的每个子列表作为单独一行追加到表格
相关代码
import pygsheets # 授权并打开表格 client = pygsheets.authorize(service_file='path/to/your/json/file.json') spreadsht = client.open("Name of Spreadsheet") gsheet = spreadsht.worksheet("title", "tab name") Rows_Cleaned = [] # 生成数据行 for a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t in zip( Site_ID,Site_Name,Location,ID,Last_Name,First_Name,Middle_Name, Staff_Type,Grade,Homeroom,Product,Tag,Charge_Type,Description, Charge_Notes,Issue_Date,Charge_Amount,Amount_Paid,Amount_Due,Satisfied_Date ): Rows = [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t] if start_date <= p <= end_date: # 日期过滤逻辑正常 Rows_Cleaned.append(Rows) # 尝试追加数据(仅首行成功) for data in Rows_Cleaned: gsheet.append_table(data, start='A2', end=None, dimension='ROWS', overwrite=False)
实际数据示例
([ '="Number"', 'Name', 'Student', '="Number"', 'Name', 'Name', 'Name', None, '9', '="B228"', 'HP CHROMEBOOK 11MK G9 MODEL #349Y8UT', '="Number"', '23-24 Lost Device', None, None, '10/27/2023 9:49:26 AM', '200.0000', '200.0000', '0.0000', '10/27/2023 9:49:26 AM' ], [ '="128"', 'Name', 'Student', '="Number"', 'Name', 'Name', 'Name', None, '3', '="218"', 'HP CHROMEBOOK 11MK G9 MODEL #349Y8UT', '="Number"', '23-24 Chromebook Adapter', None, '7005758 - TESTING TOMORROW: Lost Chromebook charger', '10/23/2023 10:35:22 AM', '20.0000', '0.0000', '0.0000', '10/23/2023 10:35:22 AM' ])
解决方案
错误原因:循环调用append_table时,每次指定start='A2',首行插入后表格结构变化,导致API响应中缺失tableRange字段,pygsheets解析失败。
有两种可行的修复方式:
方式1:一次性追加所有行(推荐,效率更高)
直接将整个二维列表传入append_table,无需循环,仅调用一次API:
if Rows_Cleaned: # 避免空列表调用 gsheet.append_table(Rows_Cleaned, start='A2', dimension='ROWS', overwrite=False)
方式2:循环时不指定start参数
append_table默认会自动定位到表格最后一行追加,去掉start='A2'即可:
for data in Rows_Cleaned: gsheet.append_table(data, end=None, dimension='ROWS', overwrite=False)
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

