1 回答
TA贡献1847条经验 获得超7个赞
您希望使用来自以下值的 CSV 数据更新现有电子表格。这些值来自谷歌文档格式,将文本转换为表格
ID, NAME, MOBILE, CITY, COUNTRY, BIRTHDAY,
3, NameGoesHere1, 21 98658 5548, abcity, countryNameHere, 1998-05-02,
6, SomeoneElse Joined Here, 21 98535 1218, whereland, Far far away, 1989-11-15,
5, AnotherCustomer, 21 85482 5245, somecity, Somewhereland, 1999-08-04,
ID, PRICE, STOCK, ASDF, BASDF, CASDF,
ID, NAME, PRICE, DESCRIPTION,
2, pen, 1.5, The pen is mightier than the sword,
3, pencil, 1.0, Can be used to write,
4, RPG, 150.0, well that escalated quickly, huh,
EMPTY,
names,
goofs,
ID, FLAVOR,
现有的电子表格有 5 张表格,用于使用 5 张表格的 CSV 数据进行更新。
您想使用 google-api-python-client 和 python 来实现这一点。
您已经能够使用 Sheets API 获取和放置电子表格的值。
如果我的理解是正确的,这个答案怎么样?请认为这只是几个可能的答案之一。
流动:
从 CSV 文件中检索值。
解析每个工作表的值,并创建请求正文。
使用创建的请求正文请求现有电子表格。
在这种情况下,我使用了电子表格.values.batchUpdate 的方法。
修改后的脚本:
在运行脚本之前,请设置csvFileId
,spreadsheetId
和的变量sheetNames
。
csvFileId = '###' # Please set the CSV file ID.
spreadsheetId = '###' # Please set the Spreadsheet ID.
sheetNames = ['Sheet1', 'Sheet2', 'Sheet3', 'Sheet4', 'Sheet5'] # Please set the sheet names in the Spreadsheet for updating.
sheets = build('sheets', 'v4', credentials=creds)
drive = build('drive', 'v3', credentials=creds)
# Retrieve data from Google Drive and parse data as an array.
data = drive.files().get_media(fileId=csvFileId).execute()
csvData = [row.split(",") for row in str(data, 'utf-8').split("\n")]
ar = []
temp = []
for i, row in enumerate(csvData):
if "".join(row) != "":
row = [v.strip() for v in row]
temp.append(row)
else:
ar.append(temp)
temp = []
if i == len(csvData) - 1:
ar.append(temp)
valuesUpdateReq = []
for i, sheet in enumerate(ar):
if bool(sheet):
sheetName = sheetNames[i]
valuesUpdateReq.append({"values": sheet, "range": sheetName, "majorDimension": "ROWS"})
# Request to Sheets API.
batch_update_values_request_body = {"data": valuesUpdateReq, "valueInputOption": "USER_ENTERED"}
res = sheets.spreadsheets().values().batchUpdate(spreadsheetId=spreadsheetId, body=batch_update_values_request_body).execute()
print(res)
笔记:
在上面的脚本中,这些值使用“USER_ENTERED”放入电子表格。这样,这些值可以被解析为字符串、数字和日期。而且,不使用字符顶部的单引号。
添加回答
举报