【问题标题】:Access worksheet inside the spreadsheet using URL and worksheet ID使用 URL 和工作表 ID 访问电子表格内的工作表
【发布时间】:2020-11-18 18:36:04
【问题描述】:

我会尽量直截了当。

我有一个这样的电子表格网址:https://docs.google.com/spreadsheets/d/1231SDFS3afer3SDfsdf-34SDFSDgfdsd42/edit#gid=5439787534

gid=5439787534 部分指向我要访问的电子表格中的确切工作表。我正在使用 python + gspred 来访问它,但我没有找到一种方法来获取我上面提到的 GID。

我的代码现在是这样的:

wb = client.open_by_url('https://docs.google.com/spreadsheets/d/1231SDFS3afer3SDfsdf-34SDFSDgfdsd42/edit#gid=5439787534')

但它不访问工作表,它只是访问一般的电子表格,而不是访问我需要的确切标签..

有什么帮助吗?

【问题讨论】:

    标签: python python-3.x google-sheets google-sheets-api gspread


    【解决方案1】:

    我相信你的目标和情况如下。

    • 您想使用 python 的 gspread 使用工作表 ID (gid) 检索工作表。
    • 您已经能够使用 Sheets API 获取和放置值。

    不幸的是,gspread 中似乎没有直接从工作表 ID 中检索工作表的方法。所以在这种情况下,我想提出一个脚本来实现你的目标。

    示例脚本:

    在此脚本中,没有显示授权脚本。所以请使用你的脚本。并且请设置spreadsheetIdsheetId的变量。

    spreadsheetId = "###" # Please set the Spreadsheet ID.
    sheetId = 12345 # Please set the sheet ID (the value of "gid")
    
    client = gspread.authorize(credentials)
    spreadsheet = client.open_by_key(spreadsheetId)
    sheets = [s for s in spreadsheet.worksheets() if s.id == sheetId]
    if sheets:
        sheet = sheets[0]
        values = sheet.get_all_values()
        print(values)
    
    • 使用 https://docs.google.com/spreadsheets/d/1231SDFS3afer3SDfsdf-34SDFSDgfdsd42/edit#gid=5439787534 的电子表格 URL 时,电子表格 ID 和工作表 ID 分别为 1231SDFS3afer3SDfsdf-34SDFSDgfdsd425439787534
    • 运行上述脚本时,当电子表格中包含sheetId 的工作表时,将返回值。

    参考:

    【讨论】:

    • 你能解释一下sheets = [s for s in spreadsheet.worksheets() if s.id == sheetId}的逻辑以及它的返回内容吗谢谢
    • @João Casarin 感谢您的回复。关于sheets = [s for s in spreadsheet.worksheets() if s.id == sheetId],这是列表理解。在这种情况下,使用输入的sheetId 从所有工作表对象中检索工作表对象。当找到sheetId 的工作表对象时,将该对象放入列表中。我认为this thread 将有助于理解它。如果我的回答对您的情况没有用,请告诉我。当时我很抱歉,我想修改它。
    • 嗯,列表理解对我来说实际上是一个新事物,我什至在毕业时都没有看到这个......我认为这是问题所在,我认为你所说的线程都无济于事我需要更深入地研究它,因为我不明白[s for s in...] 的部分另外,恭喜处理sheetId 的方式,我没想过这样做......那效果很好!谢谢哥们!
    • 对此我深表歉意,但您是否可以在我的其他问题上帮助我?它也是关于 python + gspread 的,但现在它是关于处理合并单元格的。如有需要,我可以在这里发布链接
    • @João Casarin 感谢您的回复。我很高兴你的问题得到了解决。关于你的新问题,当你发布它时,你能显示问题的 URL 吗?我想确认一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    • 2015-07-28
    • 1970-01-01
    • 2014-08-23
    相关资源
    最近更新 更多