使用Power Automate和SharePoint HTTP向列表添加条目报错
问题原因及解决办法
核心错误原因
你碰到的The type SP.ListItemEntityCollection does not support HTTP PATCH method错误,本质是请求目标和HTTP方法不匹配:
X-HTTP-Method: MERGE(对应PATCH方法)是用来更新单个已存在的列表项的,必须指向具体的条目ID;- 你当前的Uri
_api/web/lists/GetByTitle('perdiem_rates')/items/是列表项的集合端点,这个端点只支持POST(创建新项)、GET(查询项),不支持MERGE/PATCH操作。
分场景解决
场景1:往列表里新增条目
如果是要添加新数据,直接去掉X-HTTP-Method: MERGE和If-Match: *,保留POST方法即可:
- Method: POST
- Uri:
_api/web/lists/GetByTitle('perdiem_rates')/items(末尾斜杠加不加都行) - Headers:
- Accept:
application/json;odata=verbose - Content-Type:
application/json;odata=verbose
- Accept:
- Body:注意你当前的Body里
Mar字段后面少了一个逗号,必须补上(否则JSON格式错误),修正后如下:
{ "__metadata": {"type": "SP.Data.perdiem_ratesListItem"}, "Jan": @{items('Apply_to_each')['Jan']}, "Feb": @{items('Apply_to_each')['Feb']}, "Mar": @{items('Apply_to_each')['Mar']}, "Apr": @{items('Apply_to_each')['Apr']}, "May": @{items('Apply_to_each')['May']}, "Jun": @{items('Apply_to_each')['Jun']}, "Jul": @{items('Apply_to_each')['Jul']}, "Aug": @{items('Apply_to_each')['Aug']}, "Sep": @{items('Apply_to_each')['Sep']}, "Oct": @{items('Apply_to_each')['Oct']}, "Nov": @{items('Apply_to_each')['Nov']}, "Dec": @{items('Apply_to_each')['Dec']}, "Meals": @{items('Apply_to_each')['Meals']}, "County": @{items('Apply_to_each')['County']}, "City": @{items('Apply_to_each')['City']}, "State": @{items('Apply_to_each')['State']}, "DID": @{items('Apply_to_each')['DID']} }
场景2:更新已有的列表项
如果是要修改已存在的条目,必须在Uri里指定目标项的ID,同时保留X-HTTP-Method: MERGE和If-Match: *:
- Method: POST
- Uri:
_api/web/lists/GetByTitle('perdiem_rates')/items(替换成目标项的ID) - Headers:
- Accept:
application/json;odata=verbose - Content-Type:
application/json;odata=verbose - If-Match:
* - X-HTTP-Method:
MERGE
- Accept:
- Body:同样要修正
Mar字段后的逗号缺失问题,格式和上面一致。
额外提醒
- 可以调用
_api/web/lists/GetByTitle('perdiem_rates')?$select=ListItemEntityTypeFullName确认SP.Data.perdiem_ratesListItem这个类型名称是否正确,避免因类型不匹配报错; - Power Automate里有内置的「SharePoint - 创建项」「SharePoint - 更新项」动作,比手动写HTTP请求更简单,不容易踩坑。
内容的提问来源于stack exchange,提问作者msand
相关产品推荐
相关产品推荐

