【发布时间】:2023-03-21 13:05:02
【问题描述】:
只能使用 API 密钥(没有 OAuth 2.0)从工作表中读取数据,但读取开发者元数据似乎需要 OAuth 2.0。 有什么方法可以在不要求用户连接他的谷歌帐户的情况下从应用中读取元数据?
【问题讨论】:
标签: google-sheets-api google-oauth
只能使用 API 密钥(没有 OAuth 2.0)从工作表中读取数据,但读取开发者元数据似乎需要 OAuth 2.0。 有什么方法可以在不要求用户连接他的谷歌帐户的情况下从应用中读取元数据?
【问题讨论】:
标签: google-sheets-api google-oauth
如果我的理解是正确的,那么这个答案呢?请认为这只是几个可能的答案之一。
很遗憾,Sheets API 中的“REST 资源:电子表格.developerMetadata”不能与 API 密钥一起使用。在这种情况下,如您的问题中所述,需要 OAuth2。开发人员元数据也可以通过 Sheets API 中的电子表格.get 方法检索。开发人员元数据可以通过 API 密钥检索。在这个方法中,所有的开发者元数据都被检索了。所以当你想搜索开发者元数据时,请从检索到的所有开发者元数据中进行搜索。
要点:
在这种情况下,请将开发者元数据的可见性设置为
DOCUMENT。这样,开发人员元数据可以通过 API 密钥检索。如果可见性为PROJECT,则无法使用 API 密钥检索。请注意这一点。当您想使用 API 密钥检索开发者元数据时,请公开共享电子表格。这样,可以使用 API 密钥检索它。请注意这一点。
作为示例情况,假设它创建新的电子表格,并将新的开发人员元数据作为“sampleKey”的键和“sampleValue”的值创建到电子表格中。
在这种情况下,电子表格.batchUpdate 的示例请求正文如下。
{
"requests": [
{
"createDeveloperMetadata": {
"developerMetadata": {
"location": {
"spreadsheet": true
},
"metadataKey": "sampleKey",
"metadataValue": "sampleValue",
"visibility": "DOCUMENT"
}
}
}
]
}
当您从上述示例电子表格中检索开发人员元数据时,请使用以下 curl 命令。
curl "https://sheets.googleapis.com/v4/spreadsheets/### spreadsheetId ###?key=### your API key ###&fields=developerMetadata"
fields=developerMetadata 用于更容易查看响应值。当然,您也可以将* 用作fields。{
"developerMetadata": [
{
"metadataId": 123456789,
"metadataKey": "sampleKey",
"metadataValue": "sampleValue",
"location": {
"locationType": "SPREADSHEET",
"spreadsheet": true
},
"visibility": "DOCUMENT"
}
]
}
与其他情况一样,假设它创建新的电子表格,并将新的开发人员元数据创建到第一列(“A”列)作为“sampleKey”的键和“sampleValue”的值。
在这种情况下,示例请求正文如下。
{
"requests": [
{
"createDeveloperMetadata": {
"developerMetadata": {
"location": {
"dimensionRange": {
"sheetId": 0,
"startIndex": 0,
"endIndex": 1,
"dimension": "COLUMNS"
}
},
"metadataKey": "sampleKey",
"metadataValue": "sampleValue",
"visibility": "DOCUMENT"
}
}
}
]
}
当您从上述示例电子表格中检索开发人员元数据时,请使用以下 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"
}
]
},
{},
,
,
]
}
]
}
]
}
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。
【讨论】:
sheets(data(columnMetadata(developerMetadata)))。如果您使用*,您将无法获得它们。 2.我也得到了只有API key的PROJECT可见性项目