You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用GSpread从Google Sheets提取含多个HYPERLINK的单元格链接

从Google Sheets的HYPERLINK单元格提取链接

我需要从Google Sheets中带有HYPERLINK标签的单元格提取链接,但尝试GSpread多种取值方法后,仅能获取单元格显示文本,找不到相关文档支持。以下是我的代码实现及输出结果,求解决方案:

谷歌表格操作类代码

class GoogleSpreadSheet:
    def __init__(self, link: str):
        self.link: str = link
        if self.link is None:
            raise Exception("Bad link provided")

        self.gc = gspread.service_account(filename="service_account.json")

        self.sheet = self.gc.open_by_url(self.link).sheet1

    def getAllValues(self, include_header: bool = True):
        if include_header:
            return self.sheet.get_values(value_render_option=ValueRenderOption.formula)
        else:
            return self.sheet.get_values()[1:]

    def getColumnValues(self, column: int, include_header: bool = True):
        """ Column A: Column = 1 """
        if include_header:
            return self.sheet.col_values(column)
        else:
            return self.sheet.col_values(column)[1:]


def load_links_from_file(filename: str):
    with open(filename, "r") as f:
        return [line.strip().replace("\n", "") for line in f.readlines()]

尝试提取链接的主函数代码

def main():
    # 初始化表格
    sheet = GoogleSpreadSheet("https://docs.google.com/spreadsheets/d/1GMyZAJkh3hGuNThGCJ4l6NODsqfMjRF2ddJrcpxlD0c")

    # 打印不同取值方式的结果
    print(sheet.sheet.cell(2, 1, value_render_option=ValueRenderOption.formula).value)
    print(sheet.sheet.cell(2, 1, value_render_option=ValueRenderOption.formatted).value)
    print(sheet.sheet.cell(2, 1, value_render_option=ValueRenderOption.unformatted).value)
    print(sheet.sheet.cell(2, 1).value)
    print(sheet.sheet.cell(2, 1))

    # 输出结果
    # Kelli KL-5112 белая озон вб ям сбер
    # Kelli KL-5112 белая озон вб ям сбер
    # Kelli KL-5112 белая озон вб ям сбер
    # Kelli KL-5112 белая озон вб ям сбер
    # <Cell R2C1 'Kelli KL-5112 белая озон вб ям сбер'>


if __name__ == "__main__":
    main()

解决方案

要提取HYPERLINK单元格的链接,你需要在调用cell()方法时添加fetch_hyperlinks=True参数,之后通过Cell对象的hyperlink属性获取链接地址。

修改后的主函数示例:

def main():
    sheet = GoogleSpreadSheet("https://docs.google.com/spreadsheets/d/1GMyZAJkh3hGuNThGCJ4l6NODsqfMjRF2ddJrcpxlD0c")
    
    # 获取单元格并启用超链接抓取
    cell = sheet.sheet.cell(2, 1, fetch_hyperlinks=True)
    print("显示文本:", cell.value)
    print("超链接地址:", cell.hyperlink)

补充说明

  • fetch_hyperlinks参数默认是False,因此默认情况下不会获取超链接数据
  • 如果单元格没有设置超链接,cell.hyperlink会返回None
  • 若需要批量获取多个单元格的超链接,可以使用get()方法并指定include_grid_data=True,之后从返回的单元格数据中提取hyperlink字段

内容的提问来源于stack exchange,提问作者revolex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 08:55:19