在 python 中,将参数名称传递给 gspread Worksheet.update() 函数时出现问题

问题描述 投票:0回答:1

我收到此警告,我想提前为此版本更新做好准备

[*] Updating Google sheet.../home/myname/.local/lib/python3.11/site-packages/gspread/worksheet.py:1046: 
UserWarning: [Deprecated][in version 6.0.0]: method signature will change to: 'Worksheet.update(value = [[]], range_name=)' arguments 'range_name' and 'values' will swap, values will be mandatory of type: 'list(list(...))'
  warnings.warn(
Done.

我们目前使用的是 gspread 5.10.0,这是我们机器上的函数签名

myname@my-machine:~/ourdir-analytics/project$ python3.11
Python 3.11.0 (main, Aug 21 2023, 05:23:52) [GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import inspect
>>> from gspread import Worksheet  # or wherever the update function is located
>>> 
>>> sig = inspect.signature(Worksheet.update)
>>> print(sig)
(self, range_name, values=None, **kwargs)
>>> 

我已尝试以下操作,但收到以下错误

# a helper function to connect to spreadsheet
def get_sheets_tab(spreadsheet_name, worksheet_name):
    print('[*] Accessing sheets account... ', flush=True, end='')
    key_file = settings.SERVICE_ACCOUNT_FILE_LINUX if platform.system() == 'Linux' else settings.SERVICE_ACCOUNT_FILE_MAC
    gc = gspread.service_account(key_file)
    print('Done.', flush=True)
    sheet = gc.open(spreadsheet_name) # have to grab tabs by index #, so bad...
    tab = sheet.worksheet(worksheet_name)

    return tab

调用 update(),这里是问题所在,带有命名参数

import gspread
tab = get_sheets_tab("our tools", "our sheet tab")

# try 1
tab.update(values = [output_df.columns.values.tolist()] + output_df.values.tolist())
# error 1 # TypeError: update got unexpected keyword arguments: ['values']

tab.update(value = [output_df.columns.values.tolist()] + output_df.values.tolist())
# error 2 # update got unexpected keyword arguments: ['value']

tab.update(range_name = 'A1', values = [output_df.columns.values.tolist()] + output_df.values.tolist())
# error 3 # update got unexpected keyword arguments: ['value', 'range_name']

`tab.update(values = [output_df.columns.values.tolist()] + output_df.values.tolist())` is throwing the error
# error 4 # update got unexpected keyword arguments: ['values', 'range_name']

如果我删除所有参数名称,这个函数就可以正常工作,但是我在这里所做的全部目的是尝试添加参数名称,以便警告将来不会成为问题。这里发生了什么?为什么我无法将参数名称传递给该函数?

python google-sheets parameters google-sheets-api gspread
1个回答
0
投票

在你的脚本中,做如下修改怎么样?

tab.update("A1", [output_df.columns.values.tolist()] + output_df.values.tolist())

tab.update("A1", [output_df.columns.values.tolist()] + output_df.values.tolist(), value_input_option="USER_ENTERED")
  • 通过此修改,值从
    tab
    的单元格“A1”中输入。

参考:

© www.soinside.com 2019 - 2024. All rights reserved.