向Google Sheets feeds URL传入查询参数无法筛选表格数据
解决Google Sheets带筛选条件的JSON数据获取问题
我碰到过好几个开发者遇到这个问题,其实核心原因是你用的那个旧版Google Sheets Feed API(就是feeds/list开头的那个端点)已经被Google弃用停止维护了,里面的tq结构化查询参数早就不再生效,所以你的筛选规则会被直接忽略,返回表格里的全部条目。
下面给你两个可行的替代方案:
方案一:用Google Sheets API v4实现筛选(推荐)
这是Google目前官方支持的最新API,功能更稳定强大。如果你的表格是公开可访问的,可以按以下步骤操作:
- 先在Google Cloud控制台启用Google Sheets API,并生成一个API密钥(跟着官方指引操作即可)
- 构造API请求链接,结合
QUERY逻辑获取筛选后的数据。比如你要筛选nama等于test1的行,可以先在表格里用QUERY函数生成一个筛选范围,再通过API获取这个范围的数据:
这里的https://sheets.googleapis.com/v4/spreadsheets/1xeVDIWxVZrkiUjSE1xX9xW--pEm93IL4BH3L1jmS_4A/values/FilteredData!A:Z?key=你的API密钥&valueRenderOption=UNFORMATTED_VALUEFilteredData是你新建的工作表,里面用=QUERY('原始表名'!A:Z, "SELECT * WHERE nama = 'test1'", 1)生成了筛选后的数据。
方案二:用内置QUERY函数生成筛选范围后发布JSON
如果不想折腾API密钥,这个方法更简单:
- 打开你的Google表格,新建一个工作表(比如叫
FilteredResult) - 在这个新表的A1单元格输入公式:
注意把=QUERY('你的原始工作表名'!A:Z, "SELECT * WHERE nama = 'test1'", 1)你的原始工作表名替换成实际的表名,nama要确保是表格里的列标题,字符串值test1要加单引号包裹 - 点击文件 > 共享 > 发布到网页,在弹出的窗口里:
- 选择发布的内容为
FilteredResult工作表 - 格式选择
JSON - 点击发布,复制生成的链接,这个链接返回的就是你需要的筛选后JSON数据
- 选择发布的内容为
另外提一句,就算旧API还能用,你原来的tq参数语法也有小问题:字符串值需要用单引号包裹,正确的参数应该是tq=select%20*%20where%20nama='test1',不过因为旧API已经弃用,这个修正也没什么意义了,还是用上面的新方案更靠谱。
内容的提问来源于stack exchange,提问作者Twisted reality
相关产品推荐
相关产品推荐

