Python:按名称获取智能表工作表的最佳方法

时间:2018-08-28 20:11:11

标签: python smartsheet-api

我正在寻找通过Smartsheet API查找工作表的方法,我所拥有的只是工作表的名称。我目前正在这样解决

sheet_name = 'The sheet I have the name of'
sheets = ss_client.Sheets.list_sheets(include_all=True).data
sheet_id = next(sheet.id for sheet in sheets if sheet.name == sheet_name)

sheet_that_I_want = ss_client.Sheets.get_sheet(sheet_id)

有一个get_sheet方法,但它基于工作表的ID。我觉得必须有一种更直接的方法来执行此操作,但是我不确定会是什么。

3 个答案:

答案 0 :(得分:5)

表名不必是唯一的,因此没有按名称获取表的端点。

但是,您可以使用search端点按名称搜索工作表,然后筛选这些结果,这可能比遍历所有工作表要小。

sheet_name = "Demo"
search_results = ss_client.Search.search(sheet_name).results

sheet_id = next(result.object_id for result in search_results if result.object_type == 'sheet')
sheet_that_I_want = ss_client.Sheets.get_sheet(sheet_id)
print(sheet_that_I_want)

答案 1 :(得分:1)

我发现,如果我创建工作表然后搜索它,将找不到它。更新索引需要花费几秒钟。使用list_sheets似乎总是包括刚创建的一个。

答案 2 :(得分:0)

有一个 sheet_by_name 调用。

smartsheet_client = smartsheet.Smartsheet(token)

all_sheets = smartsheet.sheets.Sheets(smartsheet_client)
test_sheet = all_sheets.get_sheet_by_name("Demo")
print(testsheet.name)