如何使用 Google Sheets API v4 获取超链接

Dra*_*obZ 3 google-sheets google-sheets-api

我正在尝试使用 v4 API ValueRenderOption 参数( )访问超链接valueRenderOption=FORMULA。我尝试过 python 的 gsheets 和 cURL。不管怎样,我似乎无法得到显示超链接的公式。以下是电子表格的屏幕截图;请注意,包含该值的单元格2按预期显示了其公式,但指向https://example.com 的超链接显示为“sup”。我们是否应该有一种新的方式来访问超链接的内容?

在此输入图像描述

g表:

print(worksheet.acell('A2', value_render_option="FORMULA").value)
# sup
Run Code Online (Sandbox Code Playgroud)

卷曲:

URL="https://sheets.googleapis.com/v4/spreadsheets/$SHEET_ID/values/%27Sheet1%27%21A2"
curl -X GET "$URL?valueRenderOption=FORMULA" -H "Authorization: Bearer $TOKEN"

# output
{
  "range": "Sheet1!A1:Z1001",
  "majorDimension": "ROWS",
  "values": [
    [
      "Name",
      "Other"
    ],
    [
      "sup",
      "word"
    ],
    [
      "k",
      100
    ],
    [
      "=AVERAGE(1,2,3)",
      "k"
    ]
  ]
}
Run Code Online (Sandbox Code Playgroud)

Tan*_*ike 5

我相信你的目标如下。

  • 您想要检索设置为 Google 电子表格上的单元格的超链接。

在这种情况下,在当前阶段,可以使用Sheets API中的“spreadsheets.get”方法来检索超链接。并且,该请求需要使用field参数。这样,就可以检索到超链接。示例curl命令如下。

作为示例情况,假设 URL 设置为 Google Spreadsheet 中“Sheet1”的单元格“A1”。

示例卷曲命令:

curl \
  'https://sheets.googleapis.com/v4/spreadsheets/[SPREADSHEETID]?ranges=Sheet1!A1&fields=sheets(data(rowData(values(hyperlink))))' \
  --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
  --header 'Accept: application/json' \
  --compressed
Run Code Online (Sandbox Code Playgroud) 结果:
{
  "sheets": [
    {
      "data": [
        {
          "rowData": [
            {
              "values": [
                {
                  "hyperlink": "https://example.com/"
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

对于 gspread:

在 gspread 中,requests库的使用如下。访问令牌是从credentialsof检索的gspread.authorize(credentials)

gc = gspread.authorize(credentials)
access_token = credentials.access_token
url = 'https://sheets.googleapis.com/v4/spreadsheets/[SPREADSHEETID]?ranges=Sheet1!A1&fields=sheets(data(rowData(values(hyperlink))))'
res = requests.get(url, headers={'Authorization': 'Bearer ' + access_token})
print(res.json())
Run Code Online (Sandbox Code Playgroud) 结果:
{'sheets': [{'data': [{'rowData': [{'values': [{'hyperlink': 'https://example.com/'}]}]}]}]}
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 在此示例中,sheets(data(rowData(values(hyperlink))))用作fields。关于这一点,你也可以使用sheets. 在这种情况下,响应值中包括其他值。
  • 在样本中,Sheet1!A1被用作范围。所以请根据您的实际情况修改此范围。
  • 在现阶段,当一个超链接设置为单元格中的部分文本并且多个超链接设置为一个单元格时,不幸的是,这些超链接无法使用Sheets API直接检索。当时,作为当前的解决方法,需要使用 Google Apps 脚本。参考请小心这一点。

参考: