如何将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
相关产品推荐
相关产品推荐

