#python #google-sheets #google-api
#python #google-таблицы #google-api
Вопрос:
Я пытаюсь обновить всю электронную таблицу, используя Python, Google Seets API, v4.
Я создал функцию на основе API для обновления базы данных, но выдает следующую ошибку:
TypeError: update_values() got multiple values for argument 'range'
Функции структурированы следующим образом:
def update_values(self, range, values):
'''
documentation: https://developers.google.com/sheets/api/guides/values
values = [
[
# Cell values ...
],
# Additional rows ...
]
'''
body = {
'values': values
}
result = self.service.spreadsheets().values().update(
spreadsheetId=self.sheet_id,
range=range,
valueInputOption='USER_ENTERED',
body=body).execute()
print('{0} cells updated.'.format(result.get('updatedCells')))
Функция выполнения заключается в следующем:
def update(self,values):
pprint(self.SHEET_NAME[1])
self.gsheets.update_values(self,
range='{}!A1:AD2000'.format(self.SHEET_NAME[1]),
values=values
)
Дополнительные данные для понимания кода:
SHEET_NAME[1]='sheet_x'
gsheets.update_values
является первой функцией update_values()
в классе gsheets
range='{}!A1:AD2000'.format(self.SHEET_NAME[1]
Комментарии:
1.
range
чтобы скрыть встроенныйrange
объект, я бы начал с изменения этого имени.
Ответ №1:
Похоже update_values
, это метод, и у вас есть экземпляр его класса self.gsheets
. Python self
автоматически добавляет при вызове метода экземпляра. При вызове update_values(self, range=..., ...)
, который self
вы вводите, фактически является вторым параметром «range». Просто оставьте этот параметр.
self.gsheets.update_values(range='{}!A1:AD2000'.format(self.SHEET_NAME[1]),
values=values
)
Комментарии:
1. Я не уверен. Похоже, проблема с декодированием строки JSON. Можете ли вы распечатать сам JSON, чтобы увидеть, что не так?
np.NaN
является плавающим и поддерживается JSON. Итак,json.loads("NaN")
работает."User Ru ^"
выглядит действительно странно. Это не похоже на действительный python (a u unicode escape должен содержать 4 шестнадцатеричных символа) или json. Если вы сможете получить достаточно подробностей, это будет новый вопрос для stackoverflow.