使用 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}
)
其中 sh
是 Spreadsheet
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)
希望对您有所帮助。
我在 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}
)
其中 sh
是 Spreadsheet
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)
希望对您有所帮助。