我使用 Google Sheets API 接收数据,并希望获取位于 Google Drive 上的文件的链接,该链接显示为图标和标签,如屏幕截图所示。
我正在使用该方法https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/get 但作为回应,我总是得到“test_file.kml”,而不是 Google Drive 的链接。
如何获取链接的值?
遗憾的是,现阶段似乎无法通过Sheets API直接检索智能芯片文件的链接。但是,作为当前的解决方法,当运行以下流程时,可以通过 Sheets API 检索智能芯片文件的链接。
通过此流程,智能芯片被转换为带有链接的值。这个想法来自这篇文章(作者:我)。在这种情况下,可以通过 Sheets API 检索链接。当然,您也可以直接从 Google Spreadsheet 转换的 XLSX 数据中检索链接。在这种情况下,无法使用 Sheets API。
当上面的流程通过curl注释实现时,就变成了如下。
在本例中,Google 电子表格通过 Drive API 导出为 XLSX 文件。
curl \
'https://www.googleapis.com/drive/v3/files/[fileId]/export?mimeType=application%2Fvnd.openxmlformats-officedocument.spreadsheetml.sheet' \
-H 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
-o sample.xlsx
在本例中,XLSX 文件是通过 Drive API 转换为 Google Spreadsheet 来上传的。
curl \
'https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart' \
-H 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
-F 'metadata={"name":"sample.xlsx","mimeType":"application/vnd.google-apps.spreadsheet"};type=application/json' \
-F '[email protected]'
这里请从返回值中查看上传文件的文件ID。该文件 ID 与下一步的 Sheets API 一起使用。
在这种情况下,智能芯片的链接是从使用 Sheets API 从 XLSX 文件转换而来的 Google 电子表格中检索的。请将文件ID设置为
[fileId]
。并且,请将所需的单元格坐标设置为 A1Notation。如果智能芯片的链接是'Sheet1'!A1
,请在查询参数中添加ranges=%27Sheet1%27!A1
。
curl \
'https://sheets.googleapis.com/v4/spreadsheets/[fileId]?ranges=%27Sheet1%27!A1&fields=sheets(data(rowData(values(hyperlink))))' \
-H 'Authorization: Bearer [YOUR_ACCESS_TOKEN]'
这样,当
'Sheet1'!A1
中存在文件链接的智能芯片时,返回以下结果。
{
"sheets": [
{
"data": [
{
"rowData": [
{
"values": [
{
"hyperlink": "###"
}
]
}
]
}
]
}
]
}