无需转换为Dataframe,能否直接向Google Sheets追加列表单行?
无需DataFrame直接追加列表单行到Google Sheets的解决方案
可以直接追加,但你的数据格式不符合Google Sheets API要求,导致「无效值错误」。
错误原因
Google Sheets的Values API要求每个单元格对应单一值(字符串、数字、布尔值等),不能直接传入嵌套列表。你的single_row_list中存在多个嵌套列表元素(比如第4项['17700Call+130456', ...]),API会把这些嵌套列表解析成多单元格数据,和当前行的单个单元格位置冲突,因此报错。
修复方法
把所有嵌套列表转换成单个字符串,用分隔符(比如逗号、换行符)拼接内部元素。
修改后的代码示例
# 原始单行数据 original_row = ['21-Apr-2023 15:29:34', '25-Apr-2023', 17624.05, ['17700Call+130456', '17600Put+59182', '17900Call+59049', '17600Call+55447'], [], [], ['16900Put-7724']] # 处理嵌套列表:转成逗号分隔的字符串,空列表转成空字符串 processed_row = [','.join(item) if isinstance(item, list) else item for item in original_row] # 包装成API要求的二维数组格式 single_row_list = [processed_row] # 执行追加请求 request_Buildup = service.spreadsheets().values().append( spreadsheetId=niftyoiBuildup_spreadsheet_id, range=nifty_rangeOiBuildup, valueInputOption=value_input_option, insertDataOption=insert_data_option, body={"majorDimension": "ROWS", "values": single_row_list} ) request_Buildup.execute()
补充说明
- 如果需要在单元格内显示换行效果,可以把
','.join(item)替换成'\n'.join(item)。 - 空列表会被转换成空字符串,避免单元格显示
[]字符。
内容的提问来源于stack exchange,提问作者srt111
相关产品推荐
相关产品推荐

