我正在通过SharePoint Online上的SharePoint Designer工作流调用REST API。我正在使用变量设置列名,当我将变量放入URL调用它时,它说“列[名称]不存在”。
令人烦恼的是,当我只叫/ items吗?我可以在结果中看到该列,但是如果尝试选择该列或对其进行过滤,则会显示“不存在”。我有很多类似命名的列,而我都得到了错误。
我正在使用内部名称,我尝试在前面添加“ OData_”。我尝试在浏览器中手动键入url并输入值(以防变量导致问题),但出现相同的错误,列不存在。但我可以看到它们,我称之为所有项目。 :(
所以我有很多列的命名约定为“ [Q#] Score [#]”,例如“ Q4 Score 2”。完整项目结果中明显显示的内部名称是“ Q4_x0020_Score_x0020_2”。
这有效: https://MYSITE.sharepoint.com/sites/portal/intranet/CorpServices/QSR/_api/web/lists/GetbyTitle(“审核”)/项目?
,我得到了包含以下内容的完整的正常REST结果: 0
但是,如果我尝试: https://MYSITE.sharepoint.com/sites/portal/intranet/CorpServices/QSR/_api/web/lists/GetbyTitle(“审核”)/项目?$ Select = Q4_x0020_Score_x0020_2
然后我得到: -2146232832,Microsoft.SharePoint.SPExceptionColumn'Q4_x0020_Score_x0020_2'不存在。它可能已被其他用户删除。
我希望能够选择该列(以及许多类似的列),但没有任何作用。我已经在论坛上搜索了所有类似的问题,它们通常会出现拼写错误或忘记了ODATA_,但是我似乎无法解决问题。请帮忙。
答案 0 :(得分:1)
它似乎是间歇性地工作。...所以实际上这只是一个命名错误...一半的列为[Q#] _ x0020_Score_x0020 _ [#],一半的列为[Q#] _ x0020_score_x0020_ [ #]。 “分数”一词在某些而非某些词上大写。我没有意识到HTTP调用区分大小写。现在,我添加了一堆if语句来处理不同的变化。感谢您的阅读。
答案 1 :(得分:1)
从命名约定来看,您使用的是旧版SharePoint。 x0020 是空格的值。理想情况下,当您第一次创建该列时,您应该将其命名为不带空格。例如UserInformation。然后输入并在事实之后编辑名称,并将其命名为“用户信息”。如果单击标题名称并查看URL,您将在URL末尾看到该列的实际名称。这是区分大小写的,因为您可以有一个名为score和Score的列,这最终是它不起作用的原因。
答案 2 :(得分:0)
必须像这样加载所有字段
var lists = context.Web.Lists;
context.Load(lists);
context.ExecuteQuery();
CamlQuery query = new CamlQuery();
query.ViewXml = @"";
var list = lists.GetById("file.guid");
var listitems = list.GetItems(query);
context.Load(listitems);
context.ExecuteQuery();
var creationInformation = new ListItemCreationInformation();
var newItem=list.AddItem(creationInformation);
var fields = list.Fields;
context.Load(fields);
context.ExecuteQuery();