【问题标题】:SharePoint REST: Column does not exist errorSharePoint REST:列不存在错误
【发布时间】:2019-01-15 06:00:45
【问题描述】:

我正在使用 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('Audit')/Items?

我得到了完整的正常 REST 结果,其中包括以下行: 0

但是,如果我尝试: https://MYSITE.sharepoint.com/sites/portal/intranet/CorpServices/QSR/_api/web/lists/GetbyTitle('Audit')/Items?$Select=Q4_x0020_Score_x0020_2

然后我得到: -2146232832,Microsoft.SharePoint.SPExceptionColumn 'Q4_x0020_Score_x0020_2' 不​​存在。它可能已被其他用户删除。

我希望能够选择该列(以及几十个类似的列),但没有一个工作。我在论坛上搜索了所有类似的问题,他们通常有拼写错误或忘记了 ODATA_ 但我似乎无法解决问题。请帮忙。

【问题讨论】:

    标签: rest api sharepoint


    【解决方案1】:

    它似乎在间歇工作....所以实际上只是一个命名错误......一半的列是[Q#]_x0020_Score_x0020_[#],一半是[Q#]_x0020_score_x0020_[ #]。 “Score”这个词是针对某些人而不是其他人的。我没有意识到 HTTP 调用区分大小写。现在我添加了一堆 if 语句来处理不同的变化哈哈。感谢阅读。

    【讨论】:

      【解决方案2】:

      根据命名约定判断,您使用的是旧版 SharePoint。 x0020 是空格的值。理想情况下,当您第一次创建列时,您可以不带间距命名它。例如用户信息。然后进来并在事后编辑名称并将其称为用户信息。如果单击标题名称并查看 URL,您将在 URL 的末尾看到列的实际名称。它区分大小写,因为您可以有一个名为 score 和 Score 的列,这最终是它不起作用的原因。

      【讨论】:

        【解决方案3】:

        必须像这样加载所有字段

         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();
        

        【讨论】:

          猜你喜欢
          • 2014-11-27
          • 1970-01-01
          • 1970-01-01
          • 2022-01-20
          • 1970-01-01
          • 2012-10-22
          • 2022-08-18
          • 2013-02-22
          • 2020-10-17
          相关资源
          最近更新 更多