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

Python遍历嵌套列表更新Smartsheet遇阻:仅发送首行数据求协助

解决Smartsheet批量添加行的问题

你已经完成了数据准备和客户端初始化的核心步骤,现在的问题在于只创建了单个Row对象,没有遍历你的example嵌套列表生成所有需要添加的行;另外还有个小细节:你所有单元格都用了example[0][0],这会导致所有单元格都填入第一行第一列的值,得对应到每一行的不同列索引才行。

修正思路&步骤

  1. 补上缺失的pandas导入(你的代码里用了pd但没写导入语句)
  2. 遍历example中的每一行数据,为每一行创建一个Row实例
  3. 为每个单元格匹配正确的列索引:Name对应索引0、TCU对应1、Vendor对应2、App对应3、App_Version对应4
  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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 21:28:10