我正在使用Python sharePoint在线库-Office365-REST-Python-Client创建新的列表项。我能够成功创建新列表。
当我尝试使用“多项选择”字段创建新列表时(认为这是一个自定义字段),我收到一条错误消息。
有效载荷:
{'__metadata': {'type': 'SP.Data.MyListItem'}, 'Title': 'Task Created by Python Script',
'CategoryDescription': 'This is a test Task created by Python script with the help of Office 365 library.',
'Multichoicefield':{
'__metadata' : {'type' : 'Collection(Edm.String)' },
'results': ['value1', 'value2']
}
}
在使用上述有效负载运行时,收到An open collection property 'Multichoicefield' was found. In OData, open collection properties are not supported.", "400 Client Error: Bad Request for url:
似乎OData停止支持此功能。有谁知道如何使用多项选择字段创建
答案 0 :(得分:0)
OData的最新版本和OData库支持Open Collection属性。看来您的ClientContext使用的是ODataLibrary的过时版本。
答案 1 :(得分:-1)
检查“ Multichoicefield”字段设置,如下图所示。
并尝试在SharePoint页面的脚本编辑器Web部件中将REST API与JavaScript一起使用,以检查其是否有效。
<script src="https://code.jquery.com/jquery-1.12.4.min.js" type="text/javascript"></script>
<script type="text/javascript">
var listName="CustomList";
function AddListItem(){
var itemType = GetItemTypeForListName(listName);
var item = {
'__metadata': {'type': itemType },
'Title': 'test',
'Multichoicefield':{
'__metadata' : {'type' : 'Collection(Edm.String)' },
'results': ['value1', 'value2']
}
};
$.ajax({
url: _spPageContextInfo.siteAbsoluteUrl + "/_api/web/lists/getbytitle('" + listName + "')/items",
type: "POST",
contentType: "application/json;odata=verbose",
data: JSON.stringify(item),
headers: {
"Accept": "application/json;odata=verbose",
"X-RequestDigest": $("#__REQUESTDIGEST").val()
},
success: function (data) {
alert("succeeded.");
},
error: function (data) {
alert(JSON.stringify(data));
}
});
}
function GetItemTypeForListName(name) {
return "SP.Data." + name.charAt(0).toUpperCase() + name.split(" ").join("").slice(1) + "ListItem";
}
</script>
<input type="button" onclick="AddListItem()" value="Add"/>
如果带有REST API的JavaScript在您的环境中可用,则需要检查python中的代码。