簡體   English   中英

如何使用 Microsoft Graph API 更新 SharePoint 列表中人員或組列的值?

[英]How do I update the value of Person or Group columns in SharePoint lists using the Microsoft Graph API?

我的情況

我正在使用Microsoft Graph API (測試版)來更新 SharePoint ListItems。 但是,我無法更改“個人或組”列的值。 該列具有“允許多選”屬性並接受個人和組。 這是作為 ListItem columnSet 的一部分的樣子:

{ 
  "AssignedTo": [
    {
      "Email": "user@domain.com", 
      "LookupId": 123, 
      "LookupValue": "User Name"
    }
  ]
}

什么有效

更新“Person 或 Group”以外的列的值工作正常: 如文檔所述,我正在向 ListItem 的 columnSet 發送 PATCH 請求。 請求標頭包含內容類型“application/json”,請求正文包含列名稱及其(新)值的 JSON 編碼字典:

{
  "RegularColumn": "new value"
}

什么不起作用

我已經嘗試了很多使用用戶的 ID、電子郵件和/或姓名,但我得到的只是這個錯誤:“請求格式錯誤或不正確。”

如何更新“個人或組”列的值? 示例 JSON 請求正文會是什么樣子?

感謝您的任何建議!

很長一段時間以來,我一直在尋找同一問題的解決方案,但在 StackOverflow 或 Web 上都沒有找到任何解決方案。 感謝 Vadim Gremyachev 的帖子( 請參閱此處有關“查找”類型字段的相關問題),我能夠通過 Graph Api 使用激活的設置“allowMultipleSelection”成功更新“personOrGroup”類型的字段。 您可以通過將字段名稱與 LookupId 組合並將 LookupId 作為值傳遞來更新單值“personOrGroup”字段:

{
   "AssignedToLookupId":"123"
}

如果要更新多值 'personOrGroup' 字段,則需要先指定數據類型並將 id 作為數組傳遞:

{
   "AssignedToLookupId@odata.type":"Collection(Edm.String)",
   "AssignedToLookupId":["123", "124"] 
}

我想我找到了一種解決方法如何制作它而不是 Graph:使用 sharepoint rest api 來創建/更新多個'Person or Group'字段而不是使用AAD 客戶端(ADAL.js)的Graph api並連接到AAD 中的應用程序 它適用於 SPFx webpart 和 Azure Functions。 但無論如何,遺憾的是官方沒有來自微軟的信息。

經過大量修補后,我設法通過使用 msgraph 找到了解決方案,而無需切換回 sharepoint v1.0 api。 解決方案:您可以使用 displayName: "User Information List" 拉取用戶列表

例如:GET https://graph.microsoft.com/v1.0/groups/{group-id}/sites/root/lists/User Information List/(這包含用戶的查找 ID。另外,換句話說,這是 personOrGroup 列用於查找的列表)

如果是新條目,類似地,您首先需要以通常的方式將一個新的 listItem 添加到上面的列表中,然后使用該新創建的 id 來設置 LookupField,如上面在回答中的建議。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM