【问题标题】:Get hyperlink from a cell in google Sheet api V4从google Sheet api V4中的单元格获取超链接
【发布时间】:2017-10-22 22:19:17
【问题描述】:

我想在 Python 中获取一个单元格(例如 A1)的超链接。到目前为止我有这个代码。谢谢

properties = {
    "requests": [
    {
        "cell": {
            "HyperlinkDisplayType": "LINKED"
        },
        "fields": "userEnteredFormat.HyperlinkDisplayType"
    }

    ]
    }

result = service.spreadsheets().values().get(
    spreadsheetId=spreadsheet_id, range=rangeName, body=properties).execute()
values = result.get('values', [])

【问题讨论】:

标签: python google-sheets


【解决方案1】:

使用sheets.spreadsheets.get怎么样?此示例脚本假设您的脚本中的service 已经能够用于spreadsheets().values().get()

示例脚本:

spreadsheetId = '### Spreadsheet ID ###'
range = ['sheet1!A1:A1'] # This is a sample.
result = service.spreadsheets().get(
    spreadsheetId=spreadsheetId,
    ranges=range,
    fields="sheets/data/rowData/values/hyperlink"
).execute()

如果这对你没有用,我很抱歉。

【讨论】:

  • 这对我有用,问题,我在哪里可以找到关于 fields 参数的文档?它没有在 API 链接中列出
  • @rinkert 不幸的是,在现阶段,我找不到关于fields参数的详细文档。在当前阶段,似乎看到了像developers.google.com/sheets/api/reference/rest/v4/spreadsheets/… 这样的简单文档。对此我深表歉意。
  • 啊,别担心,你的解决方案确实有效,我的问题也解决了,谢谢!
  • @rinkert 感谢您的回复。虽然我不确定这是否能很快实现,但我想建议添加关于如何将fields 用于 Google API 的详细文档。
【解决方案2】:

在我看来,这是实际获取链接信息(地址以及显示文本)的唯一方法:

result = service.spreadsheets().values().get(
        spreadsheetId=spreadsheetId, range=range_name, 
        valueRenderOption='FORMULA').execute()
values = results.get('values', [])

这会返回单元格的原始内容,每个单元格的超链接如下所示:

'=HYPERLINK("sample-link","http://www.sample.com")'

为了我的使用,我使用以下简单的正则表达式对其进行了解析:

r'=HYPERLINK\("(.*?)","(.*?)"\)'

【讨论】:

  • 对不起,迟到的评论。我真的不明白如何做你所说的正则表达式,因为我从来没有真正使用过字符串。这是如何工作的?
  • 让我更清楚地说明这一点。如何将包含原始内容的字符串转换为包含链接的字符串和包含单元格内容的字符串?
  • @Gijsfwb 嗨,首先,如果您不熟悉正则表达式,您应该阅读它(一个很好的起点是 python 文档:docs.python.org/3/library/re.html)。其次,这是一个简单的用法示例:ideone.com/4FKVsC
【解决方案3】:

最后加的话可以查看超链接:

打印(值[0])

【讨论】:

  • 感谢您的评论。对不起,我的回答不够。
  • 别担心。您的代码可能有效,但我找不到确切的方法。无论如何
  • 谢谢。我的答案中的脚本是否不适用于您的环境?我可以看看你的整个剧本吗?如果可以,请将其添加到您的问题中。当然,请删除您的个人信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多