我想找到一种方法,可以根据我提供的条件使用Google API来检索特定的数据行。我在想“ getByDataFilter”可以做到这一点吗?
我正在编写一个供个人使用的应用程序。我想将Google表格用作后端,以便可以从中进行邮件合并。在此阶段,我正在使用API资源管理器来查看可以获取的数据。我已经弄清楚了如何使用
从一系列单元格中获取数据GET https://sheets.googleapis.com/v4/spreadsheets/1keCaROqv4ytDaf5AhcMV13Jj3N_eZCpLfRAGt2ycwA8/values/A%3AL?valueRenderOption=UNFORMATTED_VALUE&fields=values&key={YOUR_API_KEY}
我尝试使用getByDataFilter,但似乎无法返回任何过滤后的值。
我有以下内容基本上可以返回所有内容。
POST https://sheets.googleapis.com/v4/spreadsheets/1keCaROqv4ytDaf5AhcMV13Jj3N_eZCpLfRAGt2ycwA8:getByDataFilter?fields=sheets(data(columnMetadata%2FdeveloperMetadata%2Flocation%2FdimensionRange%2FstartIndex%2CrowData%2Fvalues%2FeffectiveValue%2CstartColumn%2CstartRow))&key={YOUR_API_KEY} { "dataFilters": [ { "developerMetadataLookup": { "metadataLocation": { } } } ] }
我希望能够过滤数据,并且仅返回与我指定的条件匹配的列。即一个简单的例子是,如果我有这样的一张纸
----------------------------------
| Name | Age | Job |
----------------------------------
| Craig | 42 | Teacher |
----------------------------------
| Tim | 23 | Student |
----------------------------------
| Jess | 45 | Accountant |
----------------------------------
我希望能够以某种方式过滤Tim的行并返回['Tim',23,'Student']
谢谢
克雷格
答案 0 :(得分:0)
如果我的理解正确,那么这个答案如何?请认为这只是几个答案之一。
不幸的是,无法使用电子表格.getByDataFilter的方法直接检索过滤后的值。如果要使用此功能,请首先放置开发人员元数据。然后,您可以使用sheets.getByDataFilter方法检索该值。例如,作为测试用例,它考虑了以下情况。
Tim
被放在单元格“ A3”中。metadataKey
和metadataValue
分别是key1
和value1
。POST https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}:getByDataFilter?fields=sheets%2Fdata%2FrowData%2Fvalues%2FuserEnteredValue
{"dataFilters":[{"developerMetadataLookup":{"metadataLocation":{"sheetId":{sheetId}}}}]}
metadataKey
和metadataValue
来检索值。{"sheets":[{"data":[{"rowData":[{"values":[{"userEnteredValue":{"stringValue":"Tim"}},{"userEnteredValue":{"numberValue":23}},{"userEnteredValue":{"stringValue":"Student"}}]}]}]}]}
在这种情况下,需要将开发人员元数据设置为单元格。但是从您的问题和答复中,我认为此方法可能与您想要的方法有所不同。因此,我想提出一种解决方法,以直接从电子表格中检索过滤后的值。
在这种解决方法中,我想建议使用查询语言来检索过滤后的值。示例查询如下。
select * where C='Student'
或
select * where B<40
在上述情况下,当列“ C”的job
为Student
时,将检索行。在以下情况下,当“ B”列的Age
小于40时,将检索行。在您的样本值中,从两个查询中都检索到"Tim","23","Student"
。
通过curl命令运行上述查询时,它如下所示。
curl "https://docs.google.com/spreadsheets/d/{spreadsheetId}/gviz/tq?gid={sheetId}&tqx=out:csv&range=A2:C&tq={query}&access_token={accessToken}"
{spreadsheetId}
,{sheetId}
,{query}
和{accessToken}
。如果要使用其他情况,也请修改range=A2:C
。
当对问题中的样本值运行上述curl样本时,将检索以下值。
"Tim","23","Student"