使用 gspread 在 python 到 google 工作表中插入列表列表

Inserting a list of list in python to google sheets using gspread

我在 python 中创建了一个嵌套列表,看起来像

my_list = [[a,b],[c,d],[e,f],[g,h].....]

我想要做的是将此列表作为批次插入,以便每个元素都插入到 google sheet 中的新行中。此列表是根据用户输入生成的,因此 my_list 中的元素数量可能会有所不同。 最终输出应如下所示:

我不想逐行执行此操作,因为列表可能很长,而且可能有许多相似的列表,这会使整个过程效率低下。

任何帮助将不胜感激!!

我建议使用像 pandas 这样的数据表单库将列表转换为 xlsx obj,然后使用 google 驱动器 api.

上传它

如果您使用 google 电子表格 api,可以轻松实现。 (这不是 gspread 解决方案,但检查是否可以使用 gspread 访问此端点,使用 API 调用会减轻很多负担) 从数组长度中获取行数。 例子

my_list = [[1,2],[3,4],[5,6],[7,8]]

所以这里我们有 4 个元素和 2 列(最多)

range = "A1:B"+len(my_list)

现在只需将 post 请求发送到 spreadsheets.values.append 端点

https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{range}:append

post正文如下

{
  "range": range,
  "majorDimension": "ROWS",
  "values": my_list,
}

您可以在线尝试此 API 端点 here

gspread 版本 3.0.0(撰写本文时的最新版本)中,插入您描述的嵌套列表的最有效方法如下:

my_list = [['a', 'b'], ['c', 'd'], ['e', 'f'], ['g', 'h']]

sh.values_update(
    'Sheet1!A1', 
    params={'valueInputOption': 'RAW'}, 
    body={'values': my_list}
)

其中 shSpreadsheet class 的实例,Sheet1 是 sheet 的名称正在更新。

这将通过对工作表的单个请求一次性更新单元格的值 API。

注意:在 gspread 的未来版本中,可能会有一种替代方法来执行此操作。请关注回购

我能够使用以下方法成功地将一个大数组(数据帧)插入到 google sheet 中:

来源link:https://pythonhosted.org/gspread-dataframe/

import pandas_datareader.tsp as tsp
tspreader = tsp.TSPReader(start='2019-12-1', end='2019-12-5')
tspout=tspreader.read()

import gspread
#documentation https://gspread.readthedocs.io/en/latest/api.html
from oauth2client.service_account import ServiceAccountCredentials

scope = ['https://spreadsheets.google.com/feeds',
         'https://www.googleapis.com/auth/drive']
creds = ServiceAccountCredentials.from_json_keyfile_name('client_secret.json', scope)
client = gspread.authorize(creds)
sheet = client.open("nameOFyourWORKBOOK").worksheet("nameOFyourSHEET")

from gspread_dataframe import get_as_dataframe, set_with_dataframe

set_with_dataframe(sheet, tspout, row=1, col=1, include_index=True, include_column_header=True, resize=False, allow_formulas=True)

希望对您有所帮助。