在 gspread 中使用 google 查询语言查询 google 传播 sheet

Query a google spread sheet with google query language in gspread

是否可以使用 Google Query Language in gspread API? I was wandering if we can use this API 调用来对电子表格执行查询以执行这些查询。

我相信你的目标如下。

  • 您想使用查询语言检索值。
  • 您有一个使用 gspread 的脚本,并且您想使用该脚本来实现。

修改点:

  • 遗憾的是,在当前阶段,Query 语言无法直接与 Sheets API 一起使用。这已经在你的问题的评论中提到了。
  • 但是,当使用requests库时,可以使用查询语言。
    • 此线程的“示例脚本 3”适用于 Google Apps 脚本。 使用这个方法,我认为python可以达到你的目的。并且,使用gspread的授权脚本也可以用于此方法。

以上几点反映到一个脚本中,就变成了下面这样。

示例脚本:

在这种情况下,访问令牌是从 client = gspread.authorize(credentials)credentials 中检索的,以便使用 gspread。

client = gspread.authorize(credentials) # Here, please use your authorization script for using gspread.

spreadsheetId = '###' # Please set the Spreadsheet ID.
sheetName = 'Sheet1' # Please set the sheet name.

query = 'select A where B>=5000' # This is from your sample query.
url = 'https://docs.google.com/spreadsheets/d/' + spreadsheetId + '/gviz/tq?sheet=' + sheetName + '&tqx=out:csv&tq=' + urllib.parse.quote(query)
res = requests.get(url, headers={'Authorization': 'Bearer ' + credentials.access_token})
print(res.text)
  • 在此脚本中,还使用了 import urllib.parseimport requests
  • 如果要使用sheetID代替sheet名字,请将url = 'https://docs.google.com/spreadsheets/d/' + spreadsheetId + '/gviz/tq?sheet=' + sheetName + '&tqx=out:csv&tq=' + urllib.parse.quote(query)修改为url = 'https://docs.google.com/spreadsheets/d/' + spreadsheetId + '/gviz/tq?gid=' + sheetId + '&tqx=out:csv&tq=' + urllib.parse.quote(query)
  • 在这种情况下,似乎可以使用 Sheets API 和 Drive API 的范围。

注:

  • 上面的示例脚本 returns 数据作为 CSV 数据。
  • 例如,当Spreadsheet公开分享时,不需要使用access token。因此,在这种情况下,您可以使用 res = requests.get(url).
  • 检索数据

参考文献: