Python бред, как заполнить гугл лист, словари в списке - PullRequest
0 голосов
/ 27 февраля 2020

Я пытался найти ответы на похожие вопросы, но не смог заставить работать код. У меня возникают проблемы с пониманием того, как заполнить множество похожих словарей в списке.

Ниже представлена ​​структура данных, которую я хочу экспортировать:

    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)

ссылка на изображение того, что я хочу выполнить sh в таблице с использованием вышеуказанной структуры данных: https://i.stack.imgur.com/EQLEI.png

1 Ответ

1 голос
/ 27 февраля 2020
  • Вы хотите поместить sheet_data в электронную таблицу.
  • Вы уже смогли получить и поместить значения с помощью API Sheets с помощью gspread.
  • Из ваших заголовков в изображении и ключи sheet_data, «Date», «Company_Name», «Traffi c» и «Product» соответствуют «timestamp», «company_name», «value» и «product» соответственно.

Я мог понять, как выше. Если мое понимание верно, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.

Поток:

Ход этого примера сценария следующий:

  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», «Traffi c» и «Product» настроены на электронную таблицу, как ваше изображение.

Ссылка:

...