0

我不确定我的 CAML 查询中有语法错误,或者我误解了 API 的工作原理,但我有一个非常大的文档库,我试图在其中识别没有设置合规/保留标签的项目。

我的查询试图返回库中没有将合规性保留标签设置为“测试”的任何项目。这是查询,但不管行限制如何,控制台应用程序都会返回阈值错误...“禁止尝试的操作,因为它超出了管理员强制执行的列表视图阈值。”

<View Scope='RecursiveAll'><RowLimit>20</RowLimit><Query><Where><Neq><FieldRef Name='_ComplianceTag'/><Value Type='String'>Test</Value></Neq></Where></Query></View>

我一直在尝试最基本的查询,我可以确认这有效......

<View Scope='RecursiveAll'><RowLimit>20</RowLimit></View>

但是,一旦我将元素添加到 CAML,我就会收到错误消息。似乎一旦添加了查询,它就会忽略我的行限制。计划是将这些物品小批量带回并贴上标签。我已经构建了一个控制台应用程序,它使用 SetComplianceTag 到库方法。这会将标签应用于图书馆中的所有内容,但不幸的是我的图书馆太大了,我们发现它错过了一些。

任何见解将不胜感激。

4

1 回答 1

1

进一步阅读后,我现在了解查询是在整个列表上执行的,因此无论您的 CAML 中的 rowLimit 是多少,都会应用限制。我现在已经复制并改编了 Piyush K Singh 在下面链接的教程中所做的事情。有一个 ListItemCollectionPosition 对象可以处理将您的 API 请求分成行限制中指定的大小的批次。然后我遍历每批寻找符合我指定条件的项目......

https://piyushksingh.com/2016/12/04/query-listitems-in-batches-sharepoint-online/

谢谢皮尤什!

于 2019-12-05T12:10:03.647 回答