Ошибка типа: {} не поддерживает сериализацию в формате JSON - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь написать (добавить) строку python dict в Google Sheets

ниже мой код

SCOPES = 'https://www.googleapis.com/auth/spreadsheets.readonly'
SPREADSHEET_ID = 'XXX'
RANGE_NAME = 'Sheet1!A2:F2'
now = time.strftime('%d-%m-%Y %H:%M')


def main():

    store = file.Storage('token.json')
    creds = store.get()
    if not creds or creds.invalid:
        flow = client.flow_from_clientsecrets('credentials.json', SCOPES)
        creds = tools.run_flow(flow, store)
    service = build('sheets', 'v4', http=creds.authorize(Http()))


    request = service.spreadsheets().values().append(spreadsheetId= SPREADSHEET_ID,
                                                 range= RANGE_NAME,
                                                 valueInputOption='USER_ENTERED',
                                                 insertDataOption='INSERT_ROWS',
                                                 body= {now, data2['pagespeed_score'], data2['yslow_score'], Loadedtime, pagesize, data2['page_elements'],})
    response = request.execute()

    print(response)

if __name__ == '__main__':
    main()

Но я получаю ошибку:

"TypeError: {2.1982345581054688, '11-09-2018 13:08', 8.836, 109, 52, 55} is not JSON serializable"

То, что я думаю, это то, что значения должны быть в формате json, но мои значения в словаре Python.

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Решил, изменив код, как показано ниже, изменив набор значений на dict

values = [now, pagespeed, yslow, Loadedtime, pagesize, element]
body = {'values': [values]} 


result = service.spreadsheets().values().append(
    spreadsheetId=SPREADSHEET_ID, range=RANGE_NAME,
    valueInputOption= 'USER_ENTERED', body=body).execute()
0 голосов
/ 11 сентября 2018

Здесь:

 body= {now, data2['pagespeed_score'], data2['yslow_score'], Loadedtime, pagesize, data2['page_elements'],}

вы передаете set, который не имеет эквивалента в JSON.Вам нужно проверить документацию API Google google для ожидаемого типа (вероятно, dict на самом деле).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...