You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:56:29