您好,我想知道如何在 Google Api v4 工作表查询中包含条件。
例如其中 B = '新闻
我是否将条件包含在范围内或作为附加请求参数?
我目前正在使用
获取https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values:batchGet
和
POST https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values:batchUpdate
我认为 Sheets v4 中没有现成的 query() 函数。您可以做的是使用 spreadsheets.values.get 获取工作表中给定范围的值,然后循环这些值并进行比较。示例可在Sheetsv4 中的基本阅读中找到。
除此之外,尝试这个vlookup方法。但是,它使用 Apps 脚本。
我查看了 API 文档,今天我仍然没有看到任何使用 API v4 进行查询的选项,但我需要它。在本地加载所有数据+过滤器的解决方案非常糟糕,例如因为我在某些列中有 4k 个字符,而且我不想每次只需要其中一部分就下载数十 MB,这是一个不可持续的解决方案。
(我用的是Python,但你会明白的)
data
”的data工作表选项卡
data-search
”data-search
”工作表中,第一个单元格中将包含一个 =QUERY
函数,该函数使用其 where 条件从“data
”工作表选项卡查询数据data-search
数据工作表中的 Google 工作表查询示例
data-search
:
=QUERY(data!A2:C,"SELECT * WHERE A = 'MyStringToSearchInColA'",0)
Python代码请求示例:
def do_GET(self):
parsed_url = urlparse(self.path)
# if req. URL contains "get_data" endpoint
if self.path.find("get_data") != -1:
# LOAD DATA SEARCH CONDITION FROM URL
dataToSearch = parse_qs(parsed_url.query)['myDataForWhereCond'][0]
# UPDATE QUERY IN SHEETS-> This will trigger its refresh too in sheets
range_name = 'data-search!A1:A1'
values = "=QUERY(data!A2:C,\"SELECT * WHERE A = '"+dataToSearch+"'\",0)"
value_input_option = 'USER_ENTERED'
body = {
'values': [[str(values)]]
}
result = spreadsheet_service.spreadsheets().values().update(
spreadsheetId='mySpreadsheetFileId', range=range_name,
valueInputOption=value_input_option, body=body).execute()
print('{0} cells updated.'.format(result.get('updatedCells')))
# GET RESULT OF QUERIED DATA IN SHEET
range_name2 = 'data-search!A:C'
spreadsheet_service.spreadsheets()
result = spreadsheet_service.spreadsheets().values().get(
spreadsheetId='mySpreadsheetFileId', range=range_name2).execute()
rows = result.get('values', [])
# HERE YOU HAVE EVERYTHING YOU NEEDED
print(rows)
response_content = "OK";
self.send_response(200)
self.send_header(...)
self.wfile.write(response_content.encode('utf-8'))
else:
print("SKIPPING GET REQ. FOR: " + self.path)