Python遍历嵌套列表更新Smartsheet遇阻:仅发送首行数据求协助
解决Smartsheet批量添加行的问题
你已经完成了数据准备和客户端初始化的核心步骤,现在的问题在于只创建了单个Row对象,没有遍历你的example嵌套列表生成所有需要添加的行;另外还有个小细节:你所有单元格都用了example[0][0],这会导致所有单元格都填入第一行第一列的值,得对应到每一行的不同列索引才行。
修正思路&步骤
- 补上缺失的
pandas导入(你的代码里用了pd但没写导入语句) - 遍历
example中的每一行数据,为每一行创建一个Row实例 - 为每个单元格匹配正确的列索引:
Name对应索引0、TCU对应1、Vendor对应2、App对应3、App_Version对应4 - 把所有生成的
Row收集到new_rows列表,再批量提交到Smartsheet(批量操作比逐行调用API效率更高)
修正后的完整代码
import csv import os import pandas as pd # 补上缺失的pandas导入 from simple_smartsheet import Smartsheet from simple_smartsheet.models import Sheet, Column, Row, Cell, ColumnType # 读取CSV并转换为嵌套列表 data = pd.read_csv(r'C:\Temp\Book1.csv') df = pd.DataFrame(data, columns=['Name', 'TCU', 'Vendor', 'App', 'App_Version']) example = df.values.tolist() print(example) # 初始化Smartsheet客户端 TOKEN = os.getenv("SMARTSHEET_API_TOKEN") # 建议给环境变量起明确名称 SHEET_ID = "Book1" smartsheet = Smartsheet(TOKEN) # 替换星号为你的实际API Token # 获取目标表格 sheet = smartsheet.sheets.get(SHEET_ID) print(sheet) # 遍历数据生成所有待添加的行 new_rows = [] for row_data in example: new_row = Row( to_top=True, # 如需将行添加到表格底部,可改为to_bottom=True cells=[ sheet.make_cell("Name", row_data[0]), sheet.make_cell("TCU", row_data[1]), sheet.make_cell("Vendor", row_data[2]), sheet.make_cell("App", row_data[3]), sheet.make_cell("App_Version", row_data[4]), ], ) new_rows.append(new_row) # 批量添加所有行 smartsheet.sheets.add_rows(sheet.id, new_rows)
额外提示
- 尽量用环境变量存储API Token,避免硬编码泄露敏感信息
- 如果你的CSV行数较多,Smartsheet API有批量操作的行数限制(默认是500行),如果超过限制可以拆分列表分批提交
内容的提问来源于stack exchange,提问作者MightySwami
相关产品推荐
相关产品推荐

