使用 CSV 文件导入和更新批量工作项

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

在 Azure DevOps 中使用 CSV 格式的文件批量导入和导出工作项。 虽然可以继续使用 Excel 进行批量导入和更新,但可以使用不需要 Excel 的本机导入/导出功能。 有关详细信息,请参阅使用 Excel 批量添加或修改工作项

可以使用 CSV 格式化文件批量导出工作项。 虽然继续使用 Excel 进行批量导入和更新,但可以使用查询中不需要 Excel 的本机导出功能。 有关详细信息,请参阅使用 Excel 批量添加或修改工作项

注意

导出功能适用于 Azure DevOps Server 2019 Update 1 及更高版本。 导入功能适用于 Azure DevOps Server 2020 和 Azure DevOps Services。

导入新工作项

导入的所有工作项在创建后处于“新建”状态。 此规则意味着无法指定不符合新状态的字段规则的字段值。 例如,使用敏捷流程创建新的用户情景时,State = NewReason = New. 无法指定任何其他值。

  1. 创建本地 import.csv 文件,并在 Visual Studio Code 或 Excel 中将其打开。

  2. 该文件必须包含“工作项类型”和“标题”字段。 可以根据需要包括其他字段。 有关默认字段的列表,请参阅工作项字段索引

    在以下示例中,我们包括“优先级”字段。

    Work Item Type,Title,Priority
    Issue,Fix issues with code,1
    Issue,Merge testing modules,3
    Issue,Open private preview for select customers,2
    Issue,Enable feature for customer champs,2
    Issue,Remove old test code,2
    
  3. 在项目的 Web 门户中,打开“工作版块” - “查询”,然后选择“导入工作项”选项。

    Screenshot showing Boards - Queries, Import Work Items

  4. 选择 CSV 文件,然后选择“导入”。

    Screenshot showing Import Work Items Button Image.

    导入过程以未保存的状态将导入的工作项加载到查询视图中。 未分配 ID。

  5. 验证结果,然后选择“保存项”以保存工作项。

    Screenshot showing Save button for imported work items.

    提示

    不要将 ID 分配给你要添加的新工作项,否则你将收到错误消息。

    TFS401232: 工作项 1794 不存在,或者你对它没有读取权限。

  6. 系统突出显示了那些有数据问题的工作项。 先解决数据问题,然后保存工作项。 在此示例中,“优先级”字段中输入了无效值。 通过直接打开工作项修复数据。 请改用批量编辑来修复多个出现相同问题的工作项。

    Screenshot showing fix work items with data issues.

提示

可以通过缩进标题列在导入的工作项之间添加父子链接,如本文后面的示例“是否可以导入具有父子链接的 CSV 文件?”所示。 但是,导入或更新工作项时,无法指定任何其他链接类型。

注意

一次最多可以导入 1,000 个工作项。 如果要导入的工作项超过 1,000 个,请将它们分解为多个文件并单独导入它们。

更新现有工作项

  1. 若要更新工作项,请创建查询,其中包含要导出和可能编辑的所有列。 保存查询,然后选择“导出到 CSV”,将 data.csv 文件保存到本地计算机。

    Screenshot showing export work items, CSV.

    导出的文件应类似于以下语法:

     ID,Work Item Type,State,Assigned To,Title,Tags
     "1043","Issue","To Do",,"Fix issues with code",
     "1044","Issue","To Do",,"Merge testing modules",
     "1045","Issue","To Do",,"Open private preview for select customers",
     "1046","Issue","To Do",,"Enable feature for customer champs",
     "1047","Issue","To Do",,"Remove old test code",
    
  2. 对工作项进行编辑。 CSV 文件必须包含“ID”、“工作项类型”、“标题”和“状态”字段。 要包含的任何其他字段都是可选的。

    注意

    导入标识字段时,请使用 "Display Name <email>" 格式输入名称和电子邮件。 例如,若要将工作分配给 Jamal Hartnett,请指定 "Jamal Hartnett <fabrikamfiber4@hotmail.com>"。 如果指定的值未被识别为系统的有效用户,则导入可能会遇到问题。

    在以下示例中,我们更改了现有工作项上的多个值。

    "1043","Issue","To Do","Jamal Hartnett <fabrikamfiber4@hotmail.com>","Fix issues with code",architecture
    "1044","Issue","To Do","Jamal Hartnett <fabrikamfiber4@hotmail.com>","Merge testing modules",testing
    "1045","Issue","To Do","Raisa Pokrovskaya <fabrikamfiber5@hotmail.com>","Open private preview for select customers","customer focus"
    "1046","Issue","To Do","Raisa Pokrovskaya <fabrikamfiber5@hotmail.com>","Enable feature for customer champs","customer focus"
    "1047","Issue","To Do","Christie Church <fabrikamfiber1@hotmail.com>","Remove old test code",architecture```
    
    
  3. 保存文件并导入(请参阅之前导入部分中的步骤 4-6。)

  4. 包含值更改的工作项的结果列表以粗体突出显示。 选择“保存项”以应用更改。

    Screenshot showing Import Work Items, Save Items.

  5. 有数据问题的工作项以红色突出显示,必须先解决问题才能保存它们。 在此示例中,“分配到”字段中显示无效值。 通过直接打开工作项修复数据。 如果有多个工作项存在相同的问题,你可以使用批量编辑。

    Screenshot showing Invalid value appearing in the Assigned To field.

将列表导出为 CSV 文件

在任何查询中,都可以将工作项列表导出为以逗号分隔的列表。 打开查询,选择 操作图标,然后选择“导出到 CSV”。

注意

需要 Azure DevOps Server 2019 Update 1 或更高版本。

Screenshot showing Export a query as CSV.

将工作项导出和导入到其他项目

可以使用此功能从一个项目导出工作项,然后将其导入到另一个项目。 但是,在将其导入到另一个项目之前,必须删除工作项 ID。 如果尝试将新工作项导入指定了 ID 的项目,你将收到错误。

导入或更新格式文本字段

可以更新或导入格式文本字段,例如“说明”或“验收条件”字段。 格式文本字段是 HTML 格式化字段。 通过用 <p>... </p> 将句子括起来来替换以 CRLF 结尾的行。

例如,可以导入以下工作项,其中包括“说明”字段中的三行文本。

Work Item Type,Title,Description
"Product Backlog Item","Hello World Web Site - 8","<p><strong>&nbsp;You can include bold text</strong></p><p><em>&nbsp;And italic text</em></p><p><u>&nbsp;Underline text</u></p>"

常见问题

问:是否可以在同一个 CSV 文件中导入新项和更新现有项?

答:当然可以! 将任何新工作项的 ID 字段留空。 在以下示例中,长篇故事的最后一个条目未指定 ID。

ID,Work Item Type,Title,Assigned To,State,Priority,Tags
"16504","Issue","Fix issues with code",,"To Do","1",
"16505","Issue","Merge testing modules",,"To Do","3",
"16506","Issue","Open private preview for select customers",,"To Do","2",
"16507","Issue","Enable feature for customer champs",,"To Do","2",
"16508","Issue","Remove old test code",,"To Do","2",
,"Epic","Track Telemetry for data imports",,"To Do","2",

问:如何添加多个标记?

答:可以添加多个以分号分隔的标记。 有关详细信息,请参阅 Excel 可以执行和无法执行的任务

答:可以,可以通过缩进标题列来添加子工作项。 以下示例在已定义的长篇故事下添加三个子问题。

ID,Work Item Type,Title 1,Title 2,Assigned To,State,Priority,Tags
"165","Epic","Track Telemetry for data imports",,,"To Do","2",
,"Issue",,"Fix issues with code",,"To Do","1",
,"Issue",,"Open private preview for select customers",,"To Do","2",
,"Issue",,"Enable feature for customer champs",,"To Do","2",

Screenshot showing Excel view.

问:如何得知我的已导入文件中是否有错误?

答:例如,可以通过添加带空格和连字符的标记来进行测试,并将其包含在导出中。 导入应匹配相同的格式。 CSV 文件格式设置中的任何问题都将显示在导入视图的“结果”页中。 在格式设置和语法准确无误之前,无法导入工作项。

CSV Error image

工作项的结果始终列出为单个工作项找到的数据错误。 从 Web 门户或 CSV 文件中修复每个错误,然后再次导入。

问:为什么我收到某些标识值的错误?

答:使用 Web UI 时,标识选取器会执行额外的步骤来验证用户。 首先,它会检查此人是否是组织中的有效用户。如果不是,它将在 Microsoft Entra ID 中搜索标识。 如果该用户在 Microsoft Entra ID 中,但不在组织中,则该用户将添加到有效标识。 通过 CSV 导入时,出于性能原因,标识选取器不会执行这些额外步骤。 它仅检查组织中是否已存在匹配的 UPN。如果找不到匹配的 UPN,则它会报告该标识未知。

问:CSV 导入是否支持所有工作项类型?

答:否,CSV 导入不支持以下工作项类型:

  • 代码评审请求
  • 代码评审响应
  • 反馈请求
  • 反馈响应
  • 测试用例
  • 测试计划
  • 测试套件
  • 共享参数

有关详细信息,请参阅批量导入或导出测试用例