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

问题描述 投票:0回答:1

我有一个包含大量数据和元数据的电子表格,正在尝试通过gspread在python 3.7中访问它。我设法使用batch_update方法将元数据添加到工作表中,该方法在API中调用了batchUpdate。但是,我找不到执行metadata search的方法,因为dataFilter类型不是batchUpdate的有效输入,也找不到search调用的实现。

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

spreadsheet.batch_update(payload)

关于如何检索添加的元数据的任何建议?

google-sheets google-api python-3.7
1个回答
0
投票
  • 您要检索从电子表格中放入的开发人员元数据。
  • 您想通过gspread和python实现此目的。
  • 您已经能够通过Sheets API获取和放置Spreadsheet的值。

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

问题和解决方法:

[遗憾的是,在当前阶段,无法使用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)
  • 在此修改后的脚本中,credentialsclient = gspread.authorize(credentials)用于service = discovery.build('sheets', 'v4', credentials=credentials)
  • 运行上述脚本时,搜索metadataKeyHello,并返回结果。

参考:

如果这不是您想要的方向,我很抱歉。

© www.soinside.com 2019 - 2024. All rights reserved.