ОШИБКА при обновлении электронной таблицы с использованием python, API Google Seets, v4: получено несколько значений для аргумента «диапазон»

Я пытаюсь обновить всю электронную таблицу, используя 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]
range затеняет встроенный range объект, я бы начал с изменения этого имени.
Random Davis 09.12.2020 18:09
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
100
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, что update_values — это метод, и у вас есть экземпляр его класса в self.gsheets. Python автоматически добавляет self при вызове метода экземпляра. Когда вы вызываете update_values(self, range=..., ...), то self, которое вы вводите, на самом деле является вторым параметром «диапазон». Просто оставьте этот параметр.

self.gsheets.update_values(range='{}!A1:AD2000'.format(self.SHEET_NAME[1]),
                           values=values
                           )

Я не уверен. Это похоже на проблему с декодированием строки JSON. Можете ли вы распечатать сам JSON, чтобы увидеть, что не так? np.NaN является числом с плавающей запятой и поддерживается JSON. Итак, json.loads("NaN") работает. "User R\u ^" выглядит очень странно. Это не похоже на допустимый python (побег \u unicode должен иметь 4 следующих шестнадцатеричных символа) или json. Если вы сможете получить достаточно подробностей, это будет новый вопрос для stackoverflow.

tdelaney 09.12.2020 18:48

Другие вопросы по теме