如何使用 gspread 从电子表格中获取元数据?

How can I get metadata from a spreadsheet using gspread?

我有一个包含大量数据和元数据的传播sheet,我正在尝试在 python 3.7 到 gspread 中访问它。我已经设法使用 batch_update 方法将元数据添加到 sheet,该方法调用 batchUpdate in the API. However I can not find a way to do a metadata search,因为 dataFilter 类型不是 batchUpdate 的有效输入,我不能找到 search 调用的实现。

payload = {
    "requests": [\
        {\
            "createDeveloperMetadata": {
                "developerMetadata": {
                    "metadataKey": "Hello",
                    "metadataValue": " World",
                    "location": {
                        "spreadsheet": True
                    },
                    "visibility": "DOCUMENT"
                }
            }
        }
    ]
}

spreadsheet.batch_update(payload)

关于如何检索我添加的元数据有什么建议吗?

  • 您想从电子表格中检索您放置的开发者元数据。
  • 您想通过 python.
  • 使用 gspread 来实现此目的
  • 您已经能够使用表格获取和放置电子表格的值 API。

如果我的理解是正确的,这个答案怎么样?请将此视为几个可能的答案之一。

问题和解决方法:

遗憾的是,在目前阶段,开发者元数据无法使用gspread直接获取,而开发者元数据可以使用batch_update的方法放入。 (我认为这可能会在未来的更新中得到解决。)因此,作为当前的解决方法,我想建议通过使用 gspread 的凭据来使用 google-api-python-client

修改后的脚本:

from apiclient import discovery

service = discovery.build('sheets', 'v4', credentials=credentials)

spreadsheetId = '###'  # Please set the Spreadsheet ID.
body = {'dataFilters': [{'developerMetadataLookup': {'metadataKey': 'Hello'}}]}
request = service.spreadsheets().developerMetadata().search(
    spreadsheetId=spreadsheetId, body=body)
response = request.execute()
print(response)
  • 在此修改后的脚本中,client = gspread.authorize(credentials)credentials 用于 service = discovery.build('sheets', 'v4', credentials=credentials)
  • 当上述脚本为运行时,搜索HellometadataKey,返回结果。

参考:

如果这不是您想要的方向,我深表歉意。