从TXT文件写入Google Sheets时出现‘Invalid value at 'data.values'’错误
问题分析与解决方案
问题根源
从.txt文件读取的内容是字符串类型,但Google Sheets API的values字段要求传入的是嵌套列表(二维数组)。手动赋值的values = [['65574','7657565','76576575','543533','543244634']]是符合API要求的列表结构,而直接读取文件得到的values只是一串文本格式的字符串,API无法识别,因此抛出Invalid value at 'data.values'错误。
解决方案
需要将读取到的字符串解析为Python原生的嵌套列表,以下是两种可靠的实现方式:
方法1:使用ast.literal_eval()(推荐)
ast.literal_eval()可以安全地将字符串形式的Python字面量转换为真实对象,完全适配你的文件格式:
import ast with open('numbers_list.txt') as f: data = f.read().strip() # 去除首尾空白字符,避免解析异常 values = ast.literal_eval(data) sheets_data = {'values': values} update_sheet = sheets_service.spreadsheets().values().append( spreadsheetId=spreadsheet_id, body=sheets_data, range=range_place, valueInputOption='USER_ENTERED' ).execute()
方法2:使用json.loads()
如果文件内容可以调整为标准JSON格式(将单引号替换为双引号),也可以用JSON解析:
import json with open('numbers_list.txt') as f: data = f.read().strip() data = data.replace("'", "\"") # 将单引号替换为双引号,符合JSON语法 values = json.loads(data) sheets_data = {'values': values} update_sheet = sheets_service.spreadsheets().values().append( spreadsheetId=spreadsheet_id, body=sheets_data, range=range_place, valueInputOption='USER_ENTERED' ).execute()
注意事项
- 若文件内容存在多余换行、空格或注释,需提前清理,避免解析失败
ast.literal_eval()无需修改原文件格式,比json.loads()更适配当前场景,优先选用
内容的提问来源于stack exchange,提问作者yaziki
相关产品推荐
相关产品推荐

