使用Graph API更新SharePoint列text.maxLength遇BadRequest错误求助
问题描述
使用Microsoft Graph API的PATCH请求更新SharePoint列表现有列的columnDefinition时,遭遇BadRequest错误,具体信息如下:
请求详情
- 请求地址:
https://graph.microsoft.com/v1.0/sites/my-site-id/lists/my-list-id/columns/my-column-id - 请求头:
- Accept: application/json
- Content-Type: application/json
- Authorization: Bearer Token....
- 初始请求负载:
{"text": {"maxLength": 1000}}
错误响应
初始请求返回错误:
{"error": {"code": "invalidRequest", "message": "One of the provided arguments is not acceptable.", "innerError": {"code": "badArgument", "date": "2023-01-30T16:34:49", "request-id": "b63137f9-fda0-41b7-9549-5952b5c89427", "client-request-id": "b63137f9-fda0-41b7-9549-5952b5c89427"}}}
添加"propagateChanges": true后的请求负载:
{"text": {"maxLength": 1000}, "propagateChanges": true}
对应的错误响应:
{"error": {"code": "invalidRequest", "message": "Invalid request", "innerError": {"date": "2023-01-30T16:39:37", "request-id": "41ca6541-6097-45c6-9418-d1cf57272d2c", "client-request-id": "41ca6541-6097-45c6-9418-d1cf57272d2c"}}}
注:可成功更新列的Description属性,但无法更新text.maxLength属性。
解决方案
1. 确认列类型匹配
首先验证目标列是否为单行文本(text)类型:
- 若为多行文本列,需使用
multiLineText.maxLength而非text.maxLength; - 系统内置列(如标题列)或部分特殊类型列不允许修改
maxLength属性。
2. 检查权限范围
确保请求Token包含以下权限之一:
- 应用权限:
Sites.ReadWrite.All或Sites.Manage.All - 委托权限:
Sites.ReadWrite.All
仅Sites.Read.All权限无法执行修改操作。
3. 规范请求负载格式
单行文本列的有效PATCH负载需确保maxLength值在允许范围内(单行文本列默认最大255,上限为4000),示例:
{ "text": { "maxLength": 4000 } }
4. 合理使用propagateChanges参数
该参数仅适用于从站点列继承的列表列:
- 若为列表自定义列,添加此参数会导致请求无效,需移除;
- 若为继承列,需确保站点列本身允许修改长度,再添加该参数同步变更。
5. 验证列ID正确性
确认URL中的my-column-id是列的实际ID(可通过GET请求https://graph.microsoft.com/v1.0/sites/my-site-id/lists/my-list-id/columns获取所有列详情,核对目标列的id字段),而非列的内部名称或显示名称。
6. 用Graph Explorer排查
将请求复制到Microsoft Graph Explorer中测试,排除代码层面的请求构造问题,同时在工具中确认权限已正确授予。
内容的提问来源于stack exchange,提问作者user428602
相关产品推荐
相关产品推荐

