如何通过Python SDK创建项目工作表?无法指定表类型的问题
解决Smartsheet中创建项目工作表(甘特图启用)的问题
看起来你遇到的问题是直接在创建Sheet时添加gantt_enabled: True触发了1032错误,这是因为Smartsheet的Create Sheet API并不接受这个顶层参数——gantt_enabled属于Sheet的甘特图配置属性,不是创建Sheet时的直接入参。下面给你两种可行的解决方案:
方案1:使用项目表模板创建(推荐)
Smartsheet内置了预配置好的项目管理模板,包含甘特图所需的列和默认配置,直接复制模板到目标文件夹即可生成项目表:
def create_resource_sheet(name): """ 创建新的资源工作表(项目表,带甘特图)。 :param name: 工作表名称 :return: 创建后的Sheet对象 """ folder_id = get_resource_folder_id() # 先删除同名现有工作表(实现你的TODO逻辑) existing_sheets = SS.Sheets.list_sheets(folder_id=folder_id).data for sheet in existing_sheets: if sheet.name == name: SS.Sheets.delete_sheet(sheet.id) # 使用Smartsheet内置项目模板ID(这里用默认项目模板,你也可以替换成自己的模板ID) # 可以通过SS.Templates.list_templates()获取所有模板ID project_template_id = "1234567890" # 替换为实际的项目模板ID # 复制模板到目标文件夹 copy_request = SS.models.SheetCopy({ 'destination_type': 'folder', 'destination_id': folder_id, 'new_name': name }) return SS.Sheets.copy_sheet(project_template_id, copy_request)
方案2:创建普通Sheet后启用甘特图
如果你需要自定义列,先创建包含甘特图必要列(任务名称、开始日期、结束日期等)的Sheet,再通过API启用并配置甘特图:
def create_resource_sheet(name): """ 创建新的资源工作表(项目表,带甘特图)。 :param name: 工作表名称 :return: 创建后的Sheet对象 """ folder_id = get_resource_folder_id() # 删除同名现有工作表 existing_sheets = SS.Sheets.list_sheets(folder_id=folder_id).data for sheet in existing_sheets: if sheet.name == name: SS.Sheets.delete_sheet(sheet.id) # 定义包含甘特图必要列的Sheet结构 resource_sheet = SS.models.Sheet({ 'name': name, 'columns': [ {'title': '任务名称', 'primary': True, 'type': 'TEXT_NUMBER'}, {'title': '开始日期', 'type': 'DATE'}, {'title': '结束日期', 'type': 'DATE'}, {'title': '完成百分比', 'type': 'PERCENTAGE'}, # 可以添加其他你需要的列 ] }) # 创建普通Sheet created_sheet = SS.Sheets.create_sheet_in_folder(folder_id, resource_sheet) # 启用并配置甘特图 gantt_config = SS.models.Gantt({ 'enabled': True, 'start_date_column_id': next(col.id for col in created_sheet.columns if col.title == '开始日期'), 'end_date_column_id': next(col.id for col in created_sheet.columns if col.title == '结束日期'), 'percent_complete_column_id': next(col.id for col in created_sheet.columns if col.title == '完成百分比'), # 可选:配置依赖列等 }) SS.Sheets.update_gantt(created_sheet.id, gantt_config) return created_sheet
关键说明
- 错误1032的原因:
gantt_enabled不是Create Sheet API的顶层参数,它属于甘特图配置的子属性,必须通过update_gantt接口单独设置。 - 模板方式更简单,因为内置模板已经帮你配置好了所有甘特图相关的列和默认设置,无需手动配置。
- 如果用自定义列的方式,确保包含甘特图必需的列(开始日期、结束日期等),否则启用甘特图时会失败。
内容的提问来源于stack exchange,提问作者Erwan Leroy
相关产品推荐
相关产品推荐

