簡體   English   中英

Python gspread,如何填充谷歌表,列表中的字典

[英]Python gspread, how to populate google sheet, dictionaries within list

我嘗試查看類似問題的答案,但無法使代碼正常工作。 我無法理解如何在列表中填充類似詞典的 gspread。

以下是我要導出的數據結構:

    sheet_data = [{
                "timestamp": "09-04-2019",
                "value": "10.0",
                "company_name": "Xbox",
                "product": "Buy"
                },
                {
                "timestamp": "09-03-2019",
                "value": "2.0",
                "company_name": "something",
                "product": "Sell"
        }]

以下是我現在嘗試和工作的內容。 我剩下的問題是,我正在手動輸入 cell_range = worksheet.range('A2:D3'),我該怎么做才能將工作表更新為具有給定數據的任何可用單元格。 由於我在 sheet_data 中擁有的數據量將在未來的更新中發生變化。


header = ['timestamp', 'value', 'company_name', 'product']
        worksheet.add_rows(len(sheet_data))
        cell_range = worksheet.range('A2:D3')
        flat_sheet_data = []
        for row in sheet_data:
            for column in header:
                flat_sheet_data.append(row[column])
        for i, cell in enumerate(cell_range):
            cell.value = flat_sheet_data[i]
        worksheet.update_cells(cell_range)

鏈接到我想使用上述數據結構在電子表格上完成的圖像: https ://i.stack.imgur.com/EQLEI.png

  • 您想將sheet_data放入電子表格。
  • 您已經能夠使用帶有 gspread 的 Sheets API 獲取和放置值。
  • 從圖像中的標題和 sheet_data 的sheet_data ,“日期”、“公司名稱”、“流量”和“產品”分別對應於“時間戳”、“公司名稱”、“價值”和“產品”。

我可以像上面那樣理解。 如果我的理解是正確的,這個答案怎么樣? 請將此視為幾種可能的答案之一。

流動:

此示例腳本的流程如下。

  1. 准備header_to_key
  2. 創建用於放入電子表格的列表。
  3. 使用values_append的方法放置創建的列表。

示例腳本:

在運行腳本之前,請設置變量。

spreadsheetId = "###"  # Please set the Spreadsheet ID.
sheetName = "Sheet1"  # Please set the sheet name.

sheet_data = [{
    "timestamp": "09-04-2019",
    "value": "10.0",
    "company_name": "Xbox",
    "product": "Buy"
}, {
    "timestamp": "09-03-2019",
    "value": "2.0",
    "company_name": "something",
    "product": "Sell"
}]

header_to_key = {
    'Date': 'timestamp',
    'Company_Name': 'company_name',
    'Traffic': 'value',
    'Product': 'product'
}

client = gspread.authorize(credentials)
spreadsheet = client.open_by_key(spreadsheetId)
worksheet = spreadsheet.worksheet(sheetName)

headers = worksheet.row_values(1)
put_values = []
for v in sheet_data:
    temp = []
    for h in headers:
        temp.append(v[header_to_key[h]])
    put_values.append(temp)
spreadsheet.values_append(sheetName, {'valueInputOption': 'USER_ENTERED'}, {'values': put_values})

筆記:

  • 在這個示例腳本中,它假設“Date”、“Company_Name”、“Traffic”和“Product”的標題像您的圖像一樣設置為電子表格。

參考:

以下方法對我有用

gc = gspread.authorize(credentials)
sh = gc.open_by_url("url of the sheet")
ws = sh.worksheet(ws_title)
records = json.loads(sheet_data)
keys = [str(eachvalue) for eachvalue in records.keys()]
values = [str(eachvalue) for eachvalue in records.values()]
Data =[{'range': 'A1:D1','values': [keys],}, {'range': 'A2:D2','values': [values],}]
ws.batch_update(Data);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM