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

时间:2019-11-21 15:54:40

标签: google-sheets google-api python-3.7

我有一个包含大量数据和元数据的电子表格,并正在尝试通过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)

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

1 个答案:

答案 0 :(得分: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)
  • 在此修改后的脚本中,credentials中的client = gspread.authorize(credentials)用于service = discovery.build('sheets', 'v4', credentials=credentials)
  • 运行上述脚本时,将搜索metadataKey中的Hello,并返回结果。

参考:

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