Python:按名称获取智能表 Sheet 的最佳方式

Python: Best way to get smartsheet Sheet by name

我想通过 Smartsheet api 找到 sheet,而我只有 sheet 的名称。我目前是这样解决的

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 方法,但它基于 sheet 的 ID。我觉得必须有更直接的方法来做到这一点,但我不确定它会是什么。

Sheet 名称不必是唯一的,因此没有通过名称获取 sheet 的端点。

但是,您可以使用 search 端点按名称搜索 sheet,然后筛选这些结果,这可能比迭代所有 sheet秒。

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)

我发现如果我创建一个sheet然后搜索它,就找不到了。更新索引需要几秒钟。使用 list_sheets 似乎总是包括刚刚创建的那个。

有一个 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)