如何使用 pygsheets 过滤 sheet 单元格值

How to get filtered sheet cells values with pyghseets

如何只从电子表格中获取过滤后的值?如果用户过滤了一些值,我不需要它们。

  • 您想从过滤后的 sheet 中检索值。
  • 过滤器是基本过滤器。
  • 例如,当值放入单元格 "A1:J25" 并且过滤器显示 "A4:J4" 和 "A11:J11" 的值时,您想要检索单元格的值"A4:J4" 和 "A11:J11".
  • 您想使用 pygsheets 来实现。
  • 您已经能够使用 Sheets API 和 pygsheet.
  • 获取和放置 Google Spreadsheet 的值

如果我的理解是正确的,这个答案怎么样?请将此视为几个可能的答案之一。

在这个回答中,我针对这种情况使用了查询语言。首先,使用 pygsheets 检索访问令牌和 sheet ID,然后,查询语言检索过滤后的 sheet 中的值。为此,我使用了 "requests".

示例脚本:

在使用此脚本之前,请设置变量。

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,请修改授权脚本。
  • 当此脚本用于您的示例 Spreadsheet 时,可以检索 "A4:J4" 和 "A11:J11" 的单元格值。

参考: