【问题标题】:Update Project Label Text via Dynamics API通过 Dynamics API 更新项目标签文本
【发布时间】:2023-02-23 03:42:50
【问题描述】:

我正在使用动态 CRM REST API 创建项目,并在线管理 Microsoft Projects 上的一些操作。 我们正在使用可以应用于任务的标签来表示各种事物。

通过 API,我可以读取标签,并且可以读取和写入分配给每个任务 (msdyn_projecttask) 的标签。 我没有成功的一点是创建一个 API 调用,它将标签文本从默认值(粉色、红色、黄色等)更改为更有用的内容。

目前我必须通过项目用户界面手动编辑标签文本(例如,见下文)。

重命名标签后,当我通过 API 获取它们时,我可以看到更改后的文本,但我无法找到通过 API 更改它的方法。

我可以通过获取项目标签

GET https://orgXYZABC.api.crm4.dynamics.com/api/data/v9.1/msdyn_projectlabels?$filter=_msdyn_projectid_value%20eq%20%27{projectId}%27 (其中 {projectId} 是我项目的 msydn_projectid)

返回的数据如下:

{
   "@odata.context":"https://orgXYZABC.api.crm4.dynamics.com/api/data/v9.1/$metadata#msdyn_projectlabels",
   "value":[
      {
         "@odata.etag":"W/\"21783358\"",
         "_owningbusinessunit_value":".....",
         "statecode":0,
         "msdyn_colorindex":192350000,
         "statuscode":1,
         "_createdby_value":"....",
         "_ownerid_value":".....",
         "_owningteam_value":".....",
         "modifiedon":"2022-11-02T13:32:26Z",
         "_modifiedby_value":"....",
         "versionnumber":21783358,
         "_msdyn_projectid_value":".....",
         "createdon":"2022-11-02T13:32:26Z",
         "msdyn_projectlabelid":"625eb1b2.....",
         "_owninguser_value":null,
         "overriddencreatedon":null,
         "importsequencenumber":null,
         "_modifiedonbehalfby_value":null,
         "msdyn_projectlabeltext": "Label One",
         "utcconversiontimezonecode":null,
         "_createdonbehalfby_value":null,
         "timezoneruleversionnumber":null
      },
....
   ]
}

我试过了:

PATCH https://orgXYZABC.api.crm4.dynamics.com/api/data/v9.1/msdyn_projectlabels({labelId}}) (其中 {labelId} 是上面返回的 msdyn_projectlabelid 值之一)

headers: [
  "If-Match: *",
  "OData-MaxVersion: 4.0",
  "OData-Version: 4.0",
  "Accept: application/json",
  "Authorization: ...",
  "Content-Type: application/json; charset=utf-8"
]
body: {
    "msdyn_projectlabeltext": "Test Label 1"
}

但它失败了并说:

“我们很抱歉。您不能直接对‘msdyn_projectlabel’执行‘更新’操作。请尝试通过 Project 的资源编辑 UI 对其进行编辑。”

我试过:

PATCH https://orgXYZABC.api.crm4.dynamics.com/api/data/v9.1/msdyn_projectlabels

headers: [
  "If-Match: *",
  "OData-MaxVersion: 4.0",
  "OData-Version: 4.0",
  "Accept: application/json",
  "Authorization: ...",
  "Content-Type: application/json; charset=utf-8"
]
body: {
    "msdyn_projectlabeltext": "Test Label 1"
    "msdyn_projectlabelid@odata.bind": "/msdyn_projectlabels({labelId})"
}

哪个失败了,说:

“请求的资源不支持 http 方法‘PATCH’。”

还尝试过:

PUT https://orgXYZABC.api.crm4.dynamics.com/api/data/v9.1/msdyn_projectlabels({labelId})/msdyn_projectlabeltext

headers: [
  "OData-MaxVersion: 4.0",
  "OData-Version: 4.0",
  "Accept: application/json",
  "Authorization: ...",
  "Content-Type: application/json; charset=utf-8"
]
body: {
    "value": "Test Label 1"
}

失败并出现与上述相同的错误。

在任何地方似乎都没有这方面的任何文档,如果你用谷歌搜索“msdyn_projectlabel”或“msdyn_projectlabels”(引号),你不会得到一个结果!

那里的任何人都知道这是否可能/如何成功?

【问题讨论】:

    标签: api microsoft-dynamics dynamics-crm-webapi


    【解决方案1】:

    这应该使用 Project Service Schedule 来完成,但我也一直在尝试更新.. Project Service Schedule

    【讨论】:

    • 请不要添加我也是作为答案。它实际上并没有提供问题的答案。如果您有不同但相关的问题,请ask它(如果它有助于提供上下文,请参考此问题)。如果你对这个具体问题感兴趣,你可以upvote它,留下comment,或者一旦你有足够的reputation就开始bounty
    猜你喜欢
    • 2022-10-16
    • 1970-01-01
    • 2020-03-09
    • 2018-06-25
    • 2020-04-08
    • 2015-07-21
    • 2019-07-05
    • 2021-05-14
    • 2013-07-30
    相关资源
    最近更新 更多