【问题标题】:Sort a spread sheet via gspread通过 gspread 对电子表格进行排序
【发布时间】:2018-06-19 23:36:19
【问题描述】:
我有一个包含姓名、日期和其他一些数字的 Google 电子表格。
我制作了一个桌面应用程序,为上述信息提供了一个不错的 UI。
使用该应用程序后,我对显示数据的顺序有些恼火。
我整天都在研究,我似乎找不到任何关于从 python 脚本中对电子表格进行排序的主题。
我所需要的只是一些函数,每当有人向其中添加内容以重新排序工作表时,我都可以调用该函数。
如果有人能帮助我,我将不胜感激。
提前致谢。
【问题讨论】:
标签:
python-3.x
google-sheets
gspread
【解决方案1】:
GSpread 有一个.sort() 方法可以使用给定的排序顺序对工作表进行排序。以下是您可以使用它的方法(来源 - GSpread Docs):
参数:
- specs (list) – 每列的排序顺序。每个排序顺序由一个元组表示,其中第一个元素是列索引,第二个元素是顺序本身:“asc”或“des”。
- range (str) – 以 A1 表示法排序的范围。默认情况下对整个工作表进行排序,不包括冻结的行。
例子:
# Sort sheet A -> Z by column 'B'
wks.sort((2, 'asc'))
# Sort range A2:G8 basing on column 'G' A -> Z
# and column 'B' Z -> A
wks.sort((7, 'asc'), (2, 'des'), range='A2:G8')
【解决方案2】:
您可以使用PyGsheets 库。它在较低级别使用工作表 API v4。
my_worksheet.sort_range() 函数会帮助你,但它有一些特点
-
start 和 end 单元格中的编号以 1 开头,但
basecolumnindex 以 0 开头。
- 您可以通过 2 种方式传递单元格的地址:文本索引(如
"A3")或具有 2 个元素的元组(如 (1, 3))。第二种方法对我不起作用。
-
start 和end 单元格限制的范围应包含在basecolumnindex 中传递的列