如何用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
相关产品推荐
相关产品推荐

