只能使用 API 密钥(没有 OAuth 2.0(从工作表中读取数据,但似乎读取开发人员元数据需要 OAuth 2.0。 有没有办法在不要求用户连接他的谷歌帐户的情况下从应用程序中读取元数据?
- 您希望使用 API 密钥检索电子表格的开发人员元数据。
- 您已经能够使用 API 密钥从电子表格中获取值。
如果我的理解是正确的,那么这个答案呢?请将此视为几种可能的答案之一。
问题和解决方法:
遗憾的是,Sheets API 中的"REST 资源:电子表格.developerMetadata"不能与 API 密钥一起使用。在这种情况下,如您的问题中所述,需要 OAuth2。开发人员元数据也可以通过电子表格 API 中的 spreadsheets.get 方法检索。开发人员元数据可以通过 API 密钥检索。在此方法中,将检索所有开发人员元数据。因此,当您要搜索开发人员元数据时,请从检索到的所有开发人员元数据中搜索它。
要点:
在这种情况下,请将开发人员元数据的可见性设置为
DOCUMENT
。这样,可以通过 API 密钥检索开发人员元数据。如果可见性为PROJECT
,则无法使用 API 密钥检索它。请小心这一点。如果您想使用 API 密钥检索开发者元数据,请公开共享电子表格。通过这种方式,可以使用 API 密钥检索它。请小心这一点。
示例情况 1:
作为示例情况,它假设它创建新的电子表格,并为电子表格创建新的开发人员元数据作为"sampleKey"的键和"sampleValue"的值。
在这种情况下,电子表格.batchUpdate 的示例请求正文如下所示。
{
"requests": [
{
"createDeveloperMetadata": {
"developerMetadata": {
"location": {
"spreadsheet": true
},
"metadataKey": "sampleKey",
"metadataValue": "sampleValue",
"visibility": "DOCUMENT"
}
}
}
]
}
示例 curl 命令:
从上面的示例电子表格中检索开发人员元数据时,请使用以下 curl 命令。
curl "https://sheets.googleapis.com/v4/spreadsheets/### spreadsheetId ###?key=### your API key ###&fields=developerMetadata"
- 在这种情况下,
fields=developerMetadata
用于更轻松地查看响应值。当然,您也可以将*
用作fields
。 - 在这种情况下,当上述端点被放入浏览器时,您可以看到检索到的值,因为 GET 方法。
结果:
{
"developerMetadata": [
{
"metadataId": 123456789,
"metadataKey": "sampleKey",
"metadataValue": "sampleValue",
"location": {
"locationType": "SPREADSHEET",
"spreadsheet": true
},
"visibility": "DOCUMENT"
}
]
}
示例情况 2:
与其他情况一样,它假设它创建新的电子表格,并在第一列("A"列(中创建新的开发人员元数据作为"sampleKey"的键和"sampleValue"的值。
在这种情况下,示例请求正文如下所示。
{
"requests": [
{
"createDeveloperMetadata": {
"developerMetadata": {
"location": {
"dimensionRange": {
"sheetId": 0,
"startIndex": 0,
"endIndex": 1,
"dimension": "COLUMNS"
}
},
"metadataKey": "sampleKey",
"metadataValue": "sampleValue",
"visibility": "DOCUMENT"
}
}
}
]
}
示例 curl 命令:
从上面的示例电子表格中检索开发人员元数据时,请使用以下 curl 命令。
curl "https://sheets.googleapis.com/v4/spreadsheets/### spreadsheetId ###?key=### your API key ###&fields=sheets(data(columnMetadata(developerMetadata)))"
- 在这种情况下,
sheets(data(columnMetadata(developerMetadata)))
用于更轻松地查看响应值。当然,您也可以使用*
作为fields
。
结果:
{
"sheets": [
{
"data": [
{
"columnMetadata": [
{
"developerMetadata": [
{
"metadataId": 123456789,
"metadataKey": "sampleKey",
"metadataValue": "sampleValue",
"location": {
"locationType": "COLUMN",
"dimensionRange": {
"dimension": "COLUMNS",
"startIndex": 0,
"endIndex": 1
}
},
"visibility": "DOCUMENT"
}
]
},
{},
,
,
]
}
]
}
]
}
引用:
- 方法:电子表格.developerMetadata.get
- 开发人员元数据可见性
如果我误解了你的问题,这不是你想要的方向,我很抱歉。