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

Python:无法将DataFrame追加至Google Sheets指定列及报错处理

问题解决与代码修正

报错原因

你调用gs.values_append()时参数传递冲突:Spreadsheet.values_append()的第一个参数就是range_name(格式应为工作表名!范围),但你既传了位置参数'sheet1',又通过关键字传了range='S:AE',导致同一个参数被多次赋值,触发TypeError。

需求实现方案

要同时实现A列追加日期、CSV数据写入S:AE列的需求,需调整数据结构并修正API调用方式:

修正后的代码

import pandas as pd
import gspread
from google.oauth2.service_account import Credentials
from datetime import date

def csv_to_sheets():
    tokenPath = 'path for service account file.json'
    scopes = [
        'https://www.googleapis.com/auth/spreadsheets',
        'https://www.googleapis.com/auth/drive'
    ]

    credentials = Credentials.from_service_account_file(tokenPath, scopes=scopes)
    gc = gspread.authorize(credentials)
    gs = gc.open('csv_to_gSheet')
    workSheet1 = gs.worksheet('sheet1')

    # 读取CSV数据
    my_csv = pd.read_csv("my csv file path")
    # 获取当前日期(可按需修改格式,比如"%Y/%m/%d")
    current_date = date.today().strftime("%Y-%m-%d")
    
    # 构造目标行数据:A列=日期,B-R列留空,S-AE列=CSV数据
    # S是第19列,B到R共17列,所以用17个空值填充
    empty_cols = [''] * 17
    formatted_rows = []
    for _, row in my_csv.iterrows():
        csv_row = row.tolist()
        # 拼接完整行:日期 + 空列 + CSV数据
        full_row = [current_date] + empty_cols + csv_row
        formatted_rows.append(full_row)
    
    # 追加数据到A:AE范围,确保各列数据对应正确位置
    workSheet1.values_append(
        'A:AE',
        {'valueInputOption': 'RAW'},
        {'values': formatted_rows}
    )

csv_to_sheets()

关键说明

  1. API调用修正:改用工作表对象workSheet1调用values_append(),范围参数直接指定为A:AE,避免参数冲突。
  2. 数据结构调整:通过在每行CSV数据前添加日期、中间填充空值,让CSV数据自动对应到S-AE列的位置(A列是日期,B-R列留空,S列开始为CSV内容)。
  3. 日期自定义:如果需要使用CSV自带的日期而非当前日期,只需将current_date替换为CSV中对应的日期列值即可。
  4. 列数匹配:若CSV列数与S-AE的列数(共13列:S=19到AE=31)不匹配,可调整empty_cols的长度,或对CSV数据做截断/补空处理,确保每行总长度为31(对应A到AE列)。

内容的提问来源于stack exchange,提问作者Kartikeya Kawadkar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 10:40:47