如何使用REST在SharePoint 2013设计器中循环通过多值People字段或Lookup字段

问题描述 投票:-1回答:1

我有一个多值人员选择器和一个多值查阅字段,我需要阅读2013年工作流程中的所有条目。我知道如何创建工作流以检索数据并使用REST和字典遍历每个列表项。鉴于我要遍历每个项目,因此我现在需要遍历每个多值字段。

过去,我使用循环迭代器和第二个字典条目来完成此操作,该条目代表多值字段中的数据,但我现在无法再访问此代码。我可以使用一个循环并通过我的responseContent来使用find函数进行解析,但这是不可靠的,因为我的reponseContent将在其中包含多个记录,并且我知道可以使用第二个字典条目来完成。

我的REST查询是:

_api/lists/GetByTitle('EmailSetup')/Items?$select=EmailYN,EmailSubject,EmailBody,EmailTo/EMail,Emailcc/EMail,EmailToWorkflowPerson/Title,EmailccWorkflowPersons/Title&$filter=(Title%20eq%20%27BSM%20Review%27)%20and%20(WorkflowName%20eq%20%27ProcessBSMRequests%27)&$expand=EmailTo,Emailcc,EmailToWorkflowPerson,EmailccWorkflowPersons

我的多值字段是Emailcc和EmailccWorkflowPerson,(分别是人员选择器和查找)。

我有我的第一个字典,它是捕获请求头的以下数据结构

Accept        String  application/json;odata=verbose
Content-Type  String  application/json;odata=verbose

在我的第一个循环中,我获得了所有属性,但不确定如何获取多值字段Emailcc和EmailccWorkflowPersons。

是的,我可以解析我的响应,但是有一种更好的方法可以将这些多值字段放入结构中,然后遍历它们。

我需要的是那个结构(词典),如何将数据放入那个结构,然后如何遍历那个结构。

最终结果应为(伪代码)排序,其中Index是我所在的记录,而Index2是我所在的多值。

d/results([%Varaible: Index%])/Emailcc/Email[%Variable: Index2%])xxx
sharepoint-2013 sharepoint-designer multivalue
1个回答
-1
投票

[通过大量调试,我得到了一半的答案,也许有人可以帮助我解决另一半。数据通过REST返回时的数据结构看起来像(对我们自己的数据有一些掩盖):

responseContent={"d":{"results":[{
"__metadata":{"id":"Web\/Lists(guid'c7bb71c8-a9dd-495f-aa5f-4dcacdf8db5c')\/Items(1)","uri":"https:\/\/xxxxx.xxxxxx.xxxxxxxxx.xxx\/hc\/teams\/MES\/_api\/Web\/Lists(guid'c7bb71c8-a9dd-495f-aa5f-4dcacdf8db5c')\/Items(1)","etag":"\"13\"","type":"SP.Data.EmailSetupListItem"},
"EmailTo":{"__metadata":{"id":"b493bee4-ec1a-4b76-a028-11766bdb7e5b","type":"SP.Data.UserInfoItem"},"EMail":"[email protected]"},
"EmailToWorkflowPerson":{"__deferred":{"uri":"https:\/ \/xxxxx.xxxxxx.xxxxxxxxx.xxx\/hc\/teams\/MES\/_api\/Web\/Lists(guid'c7bb71c8-a9dd-495f-aa5f-4dcacdf8db5c')\/Items(1)\/EmailToWorkflowPerson"}},
"Emailcc":{"results":[{"__metadata":{"id":"790a690a-515b-4d07-bba3-73bf325fbbed","type":"SP.Data.UserInfoIt em"},"EMail":"[email protected]"},{"__metadata":{"id":"3d77e75c-5fa8-4df6-937c-97e572714843","type":"SP.Data.UserInfoItem"},"EMail":"[email protected]"}]},
"EmailccWorkflowPersons":{"results":[{"__metadata":{"id":"06582ed9-09 10-4932-9b43-0cfb072942c7","type":"SP.Data.WorkflowPersonsListItem"},"Title":"Assistant Administrator"},{"__metadata":{"id":"13d03566-1703-4550-a21f-08ea286d4940","type":"SP.Data.WorkflowPersonsListItem"},"Title":"Initiator"}]},
"EmailYN":"No",
"EmailSubject":"BSM Request # %%ID%%",
"EmailBody":"<div class=\"ExternalClass645790473F7D4B62BE6224DD7B93990F\">%%IDLINK%%<br><\/div><div class=\"ExternalClass645790473F7D4B62BE6224DD7B93990F\">and the BSM#&#160;%%ID%%<br><\/div><div class=\"ExternalClass64 5790473F7D4B62BE6224DD7B93990F\"><br><\/div>"
}]}}

我创建了另一个字典变量,EmailResults,就像第一个存储多值emailcc地址的变量。]​​>

然后获取以下内容:

Get d/results([%variable: Index%)/Emailcc/results from Variable:responseContent (Output to Variable: EmailccResults)

为了获得记录计数,我使用了EmailccResults中的Count Items

我将第二个索引设置为从零开始,并根据EmailccResults中的计数遍历数字。设置我的中间电子邮件地址(从多值“人员”选择器中一次获取一个值)。

Get d/results([%variable: Index%)/Emailcc/results(%Variable: Index2%)/EMail from Variable: responseContent (Output to Variable: EmailCc)

然后我增加Index2变量并转到下一条记录。这很完美。

现在,我的问题是此查询中包含多值查找(请参见上面的结果)。我尝试相同的逻辑,但成功获得了计数,但没有获得“标题”字段。我得到的是:

获取变量/结果([%变量:索引%)/ EmailccWorkflowPersons /结果来自Variable:responseContent(输出到变量:EmailccResults)

我的实际任务是:

Get d/results([%variable: Index%)/EmailccWorkflowPersons/results(%Variable: Index2%)/Title from Variable: responseContent (Output to Variable: tmpvar)

**查找的工作方式完全相同。我的问题是我的上一步在文本框中有一些空白行。

© www.soinside.com 2019 - 2024. All rights reserved.