我收到此警告,我想提前为此版本更新做好准备
[*] 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']
如果我删除所有参数名称,这个函数就可以正常工作,但是我在这里所做的全部目的是尝试添加参数名称,以便警告将来不会成为问题。这里发生了什么?为什么我无法将参数名称传递给该函数?
在你的脚本中,做如下修改怎么样?
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”中输入。