2

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

在此处输入图像描述

表格:

print(worksheet.acell('A2', value_render_option="FORMULA").value)
# sup

卷曲:

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"
    ]
  ]
}
4

1 回答 1

4

我相信你的目标如下。

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

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

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

示例 curl 命令:

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
结果:
{
  "sheets": [
    {
      "data": [
        {
          "rowData": [
            {
              "values": [
                {
                  "hyperlink": "https://example.com/"
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

对于 gspread:

在 gspread 中,requests库的使用如下。访问令牌是从 中检索credentialsgspread.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())
结果:
{'sheets': [{'data': [{'rowData': [{'values': [{'hyperlink': 'https://example.com/'}]}]}]}]}

笔记:

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

参考:

于 2020-09-10T23:42:54.763 回答