有没有办法从sheetfu获取实际的A1范围-get_data_range()

时间:2019-10-31 17:11:54

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

我正在尝试使用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()

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

2 个答案:

答案 0 :(得分:1)

我收到了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 属性目前尚未记录,但可以使用,应在接下来的几周内正式记录。

答案 1 :(得分: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。