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

如何将CSV文件追加到Google Sheet已有数据末尾而非覆盖原有数据

问题原因

你当前调用的client.import_csv()方法原生逻辑为用传入的CSV内容完全覆盖目标谷歌表格的全部数据,所以无法实现追加写入的需求。

修正后可实现追加效果的代码
import gspread
import csv
from oauth2client.service_account import ServiceAccountCredentials

scope = ["https://spreadsheets.google.com/feeds", 'https://www.googleapis.com/auth/spreadsheets',
         "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive"]

credentials = ServiceAccountCredentials.from_json_keyfile_name(
    'key.json', scope)
client = gspread.authorize(credentials)

# 打开目标表格,默认取第一个工作表,如需指定其他工作表可修改为get_worksheet(索引)
spreadsheet = client.open('upload_data')
worksheet = spreadsheet.sheet1

# 读取本地CSV文件内容,转为二维列表
with open('gmt2.csv', 'r', encoding='utf-8') as file_obj:
    csv_reader = csv.reader(file_obj)
    csv_data = list(csv_reader)

# 跳过CSV表头的逻辑:如果不需要重复写入表头,取消下一行的注释即可
# csv_data = csv_data[1:]

# 获取当前工作表最后一行有效数据的行号
last_row = len(worksheet.get_all_values())

# 从最后一行的下一行开始写入CSV数据
worksheet.insert_rows(csv_data, row=last_row + 1)
注意事项
  • 如果你的CSV文件包含中文,需要确保open方法中指定的编码和你本地CSV文件的编码一致,GBK编码的文件可将encoding='utf-8'替换为encoding='gbk'
  • 如果需要写入到表格的其他工作表,可修改worksheet = spreadsheet.sheet1为worksheet = spreadsheet.get_worksheet(1),数字为工作表的索引,从0开始计数
  • 单次写入的行数超过谷歌表格API限制时,可拆分数据分批次写入,数据量较大(超过1000行)时建议使用batch_update方法提升写入效率,减少API请求次数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:18:01