【问题标题】:Is there a way to obtain the actual A1 range from sheetfu - get_data_range()有没有办法从 sheetfu 获取实际的 A1 范围 - get_data_range()
【发布时间】:2019-10-31 17:11:54
【问题描述】:

我正在尝试使用 Sheetfu 库的 get_data_range() 获取实际的 A1 值。

当我使用下面的代码时,它运行良好,我得到了我所期望的。

invoice_sheet = spreadsheet.get_sheet_by_name('Invoice')
invoice_data_range = invoice_sheet.get_data_range()
invoice_values = invoice_data_range.get_values()
print(invoice_data_range)
print(invoice_values)

从我得到的 print() 语句中:

<Range object Invoice!A1:Q42>
[['2019-001', '01/01/2019', 'Services']...] #cut for brevity

获得“A1:Q42”值的最佳方法是什么?我真的只想要范围的结尾(Q42),因为我需要构建 get_range_from_a1() 参数“A4:Q14”。我的工作表有已知的标题(第 1-3 行),并且 get_values() 包括 3 行我不希望在 get_values() 列表中。

我想我可以做一些字符串操作来提取“:”和“>”之间的文本

<Range object Invoice!A1:Q42>

...但这似乎有点草率。

顺便说一句,能够像这样调用 get_data_range() 真是太棒了:

invoice_sheet = spreadsheet.get_sheet_by_name('Invoice')
invoice_data_range = invoice_sheet.get_data_range(start="A4", end="")
invoice_values = invoice_data_range.get_values()

...但这更像是一个功能请求。 (顺便说一句,我很乐意这样做)。

【问题讨论】:

    标签: python google-sheets google-api google-sheets-api google-api-python-client


    【解决方案1】:

    作者在这里。艾伦回答得很好。 我在库中添加了范围级别的一些方法,它们只是坐标属性的快捷方式。

    
    from sheetfu import SpreadsheetApp
    
    spreadsheet = SpreadsheetApp("....access_file.json").open_by_id('long_string_id')
    sheet = spreadsheet.get_sheet_by_name('test')
    data_range = sheet.get_data_range()
    
    starting_row = data_range.get_row()
    starting_column = data_range.get_column()
    max_row = data_range.get_max_row()
    max_column = data_range.get_max_column()
    
    

    这将有效地告诉您工作表中包含数据的最大行和最大列。

    如果使用get_data_range 方法,第一行第一列通常为 1。

    【讨论】:

      【解决方案2】:

      我收到了Sheetfu 所有者的回复,下面的代码提供了我正在寻找的信息。 示例代码:

      from sheetfu import SpreadsheetApp
      
      spreadsheet = SpreadsheetApp("....access_file.json").open_by_id('long_string_id')
      sheet = spreadsheet.get_sheet_by_name('test')
      data_range = sheet.get_data_range()
      
      range_max_row = data_range.coordinates.row + data_range.coordinates.number_of_rows - 1
      range_max_column = data_range.coordinates.column + data_range.coordinates.number_of_columns - 1
      

      在撰写本文时,.coordinates 属性目前没有记录,但它们是可用的,应该在接下来的几周内正式记录。

      【讨论】:

        猜你喜欢
        • 2012-01-01
        • 1970-01-01
        • 2021-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-19
        • 2015-09-06
        相关资源
        最近更新 更多