在 gspread 中使用谷歌查询语言查询谷歌电子表格

时间:2021-04-14 08:32:39

标签: python google-sheets-api google-api-python-client gspread

是否可以在 gspread API 中使用 Google Query Language 对电子表格执行查询?我想知道我们是否可以使用 this API 调用来执行这些查询。

1 个答案:

答案 0 :(得分:1)

我相信你的目标如下。

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

修改点:

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

当以上几点反映到脚本中时,它变成如下。

示例脚本:

在这种情况下,访问令牌从 credentialsclient = gspread.authorize(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
  • 如果您想使用工作表 ID 而不是工作表名称,请将 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 的范围。

注意:

  • 以上示例脚本将数据作为 CSV 数据返回。
  • 例如,当电子表格公开共享时,不需要使用访问令牌。因此,在这种情况下,您可以使用 res = requests.get(url) 检索数据。

参考: