我目前正在學習 Python,我正在嘗試為客戶端的 Google Sheets API 和 Python 創建自動化代碼。到目前為止,我已經使用我的自動化代碼成功地從網站下載了一個 csv 檔案,找到了該檔案,并將該檔案推送到了 Google 表格。我從這個問題的Ufos 答案中使用了我的邏輯。問題是我重復這個程序大約 10 次,Google Sheet 上的 csv 資料被新資料覆寫。我的客戶希望在一個地方查看所有客戶的資料。我試圖做追加,但不能讓它與檢索到的 csv 資訊一起作業。我已經盡我最大的努力使用 Google,但我似乎無法讓它作業。任何幫助將非常感激!
def insertIntoSheets(self, email, owner):
creds = service_account.Credentials.from_service_account_file(
self.SERVICE_ACCOUNT_FILE, scopes=self.SCOPES)
service = build('sheets', 'v4', credentials=creds)
# Insert CSV information into Google Sheet
sheet = service.spreadsheets()
csv_path = ""
csv_files = os.listdir(self.DOWNLOADS_PATH)
for csv_file in csv_files:
if csv_file.startswith("lead_export"):
print("CSV path found")
csv_path = os.path.join(self.DOWNLOADS_PATH, csv_file)
print(f'CSV_PATH: {csv_path}')
if csv_path == "":
print("No CSV file detected. Must not have downloaded. Please try again.")
else:
#add email and owner
values = (
(owner, email),
)
value_range_body = {
'majorDimension': 'ROWS',
'values': values
}
service.spreadsheets().values().append(spreadsheetId=self.DATA_SPREADSHEET_ID,
valueInputOption='USER_ENTERED',
range="Sheet1!A1",
body=value_range_body).execute()
#add CSV to Google Sheets
print(f'Attempting to upload CSV file for {email}')
with open(csv_path, 'r') as csv_file:
csvContents = csv_file.read()
body = {
'requests': [
{
'pasteData': {
"coordinate": {
"sheetId": [sheetId],
"rowIndex": "0", # adapt this if you need different positioning
"columnIndex": "0", # adapt this if you need different positioning
},
"data": csvContents,
"type": 'PASTE_NORMAL',
"delimiter": ',',
}
}
]
}
request = sheet.batchUpdate(spreadsheetId=self.DATA_SPREADSHEET_ID, body=body)
response = request.execute()
print(f'Deleting CSV file for {email} account')
deleted = self.removeCSV()
if deleted == 0:
print(f'No CSV files detected for {email}')
else:
print(f'{deleted} CSV files deleted for {email}.')
return response
uj5u.com熱心網友回復:
我相信你的目標如下。
- 您想將檔案中的 CSV 資料附加到 Google 電子表格。
- 您想使用 googleapis for python 來實作這一點。
- 您已經能夠使用 Sheets API 獲取和放置 Google 電子表格的值。
在這種情況下,如何進行以下修改?
修改后的腳本:
請按如下方式修改您的腳本。
從:
with open(csv_path, 'r') as csv_file:
csvContents = csv_file.read()
body = {
'requests': [
{
'pasteData': {
"coordinate": {
"sheetId": [sheetId],
"rowIndex": "0", # adapt this if you need different positioning
"columnIndex": "0", # adapt this if you need different positioning
},
"data": csvContents,
"type": 'PASTE_NORMAL',
"delimiter": ',',
}
}
]
}
request = sheet.batchUpdate(spreadsheetId=self.DATA_SPREADSHEET_ID, body=body)
response = request.execute()
到:
with open(csv_path, newline='') as f:
reader = csv.reader(f)
values = list(reader)
response = service.spreadsheets().values().append(spreadsheetId=spreadsheetId, valueInputOption='USER_ENTERED', range="Sheet1", body={"values": values}).execute()
- 在此修改中,
import csv使用了。 - 請
"Sheet1"根據您的實際情況修改作業表名稱。 - 在此修改中,CSV 資料作為串列從檔案中檢索,并使用電子表格.values.append 方法將該串列作為附加值放入電子表格。
參考:
- 方法:spreadsheets.values.append
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/372961.html
標籤:Python 谷歌表格 google-sheets-api
