如何仅从电子表格中获取过滤后的值?如果用户过滤了一些值,我不需要它们。
问问题
308 次
1 回答
1
- 您想要从过滤后的工作表中检索值。
- 过滤器是基本过滤器。
- 例如,当值被放入单元格“A1:J25”并且过滤器显示“A4:J4”和“A11:J11”的值时,您想要检索“A4:J4”的单元格的值”和“A11:J11”。
- 您想使用 pygsheets 来实现这一点。
- 您已经能够使用带有 pygsheet 的 Sheets API 获取和放置 Google 电子表格的值。
如果我的理解是正确的,这个答案怎么样?请认为这只是几个可能的答案之一。
在这个答案中,我针对这种情况使用了查询语言。首先,使用 pygsheets 检索访问令牌和工作表 ID,然后,通过查询语言检索过滤工作表中的值。为此,我使用了“请求”。
示例脚本:
在使用此脚本之前,请设置变量。
import csv
from io import StringIO
import pygsheets
import requests
service_account_file = '###' # Please set the JSON filename including the credentials of service account.
spreadsheet_id = '###' # Please set the Spreadsheet ID.
sheet_name = 'Sheet1' # Please set the sheet name.
gc = pygsheets.authorize(service_file=service_account_file)
sh = gc.open_by_key(spreadsheet_id)
wks = sh.worksheet_by_title(sheet_name)
sheet_id = wks.jsonSheet['properties']['sheetId']
url = 'https://docs.google.com/spreadsheets/d/' + spreadsheet_id + '/gviz/tq?tqx=out:csv&gid=' + str(sheet_id)
res = requests.get(url, headers={'Authorization': 'Bearer ' + gc.oauth.token})
strValues = res.text
f = StringIO(strValues)
reader = csv.reader(f, delimiter=',')
ar = [row for row in reader]
ar.pop(0)
print(ar)
- 在此示例脚本中,我使用了服务帐户。如果您使用的是 OAuth2,请修改授权脚本。
- 当此脚本用于您的示例电子表格时,可以检索“A4:J4”和“A11:J11”单元格的值。
参考:
于 2020-02-21T12:08:09.550 回答