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”放入電子表格。這樣,這些值可以被解析為字符串、數字和日期。而且,不使用字符頂部的單引號。
添加回答
舉報