Sharepoint 从多个列表中获取值

Sharepoint 从多个列表中获取值,sharepoint,office365,caml,hosted-app,Sharepoint,Office365,Caml,Hosted App,我正在开发SharePoint托管的应用程序,以计算同一网站集下多个列表的值。我必须查找具有相似名称的列表 例如:根站点: /dev 子网站: /dev/site1 /dev/site2 站点1和站点2都有名为“时间表”的列表考虑用户1和用户2。每个用户都可以访问这两个子站点。他们会在两个网站上更新时间表 我需要的是计算站点1和站点2的时间表列表的a字段(loggedhours)值,然后将其添加,然后将其存储到根站点列表(单独的列表)中 此外,我还必须仅根据用户筛选值 例如:在site

我正在开发SharePoint托管的应用程序,以计算同一网站集下多个列表的值。我必须查找具有相似名称的列表

例如:根站点:

/dev 
子网站:

/dev/site1 
/dev/site2 
站点1和站点2都有名为“时间表”的列表
考虑用户1和用户2。每个用户都可以访问这两个子站点。他们会在两个网站上更新时间表

我需要的是计算站点1和站点2的时间表列表的a字段(loggedhours)值,然后将其添加,然后将其存储到根站点列表(单独的列表)中

此外,我还必须仅根据用户筛选值

例如:在site1>时间表中-我必须计算当前用户创建的项目,在Site2>时间表中-计算当前用户创建的项目并将其存储到根站点

我使用caml查询来检索值。但我不知道如何通过caml查询根据当前用户进行过滤

我的代码

var TimesheetList01 = web01.get_lists().getByTitle('Timesheet');

var camlQuery01 = new SP.CamlQuery();
camlQuery01.set_viewXml("<View><Query><Where></Where></Query></View>");

this.collListItem01 = TimesheetList01.getItems(camlQuery01);
currentcontext01.load(collListItem01, 'Include(Id,LoggedHours)');

currentcontext01.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
             function onQuerySucceeded(sender, args) {
             var mysum01 = 0;
              var myloggedHours01 = 0;
              var listItemInfo01 = '';
             var listItemEnumerator011 = collListItem01.getEnumerator(); 
             while (listItemEnumerator011.moveNext()) {
                var oListItem01 = listItemEnumerator011.get_current();
                  myloggedHours01 = oListItem01.get_item('LoggedHours');
                  mysum01 = mysum01 + myloggedHours01;`
var TimesheetList01=web01.get_list().getByTitle(“时间表”);
var camlQuery01=新SP.CamlQuery();
camlQuery01.set_viewXml(“”);
this.collListItem01=TimesheetList01.getItems(camlQuery01);
currentcontext01.load(collListItem01,'Include(Id,LoggedHours)');
currentcontext01.executeQueryAsync(Function.createDelegate(this,this.onQuerySucceed),Function.createDelegate(this,this.onQueryFailed));
函数onquerysucceed(发送方,参数){
var mysum01=0;
var myloggedHours01=0;
var listItemInfo01='';
var listItemEnumerator011=collListItem01.getEnumerator();
while(listItemEnumerator011.moveNext()){
var oListItem01=listItemEnumerator011.get_current();
myloggedHours01=oListItem01.get_项('LoggedHours');
mysum01=mysum01+myloggedHours01`
请帮忙


谢谢,Arun

我将更新CAML查询中的
Where
,以包括(其中“Author”将是您要筛选的人员字段的内部名称):



UserID
将解析为当前用户的UserID。

伙计们,帮助获取基于登录用户的值。尽快!!感谢您的更新..我在这里遇到了一些不同的情况。我想从另一个列表中检索数据,其中我有“人员选择器”字段(ResourceName)。该列表应由管理员创建。因此我不能在此处使用Author。我当前的代码为“”但它不起作用..有什么建议吗?我假设你发送的CAML是完整查询的摘录?否则你在开始时会丢失一些节点。我要检查一件事-是
ResourceName
你正在筛选的人员列的真实内部名称?你是否收到错误或没有得到结果?如你所说你在做你的CAML查询时,我建议你弄清楚细节。链接页面上应该有一个下载链接。我怀疑我正在与当前用户进行比较的字段的数据类型。请你在UserID上提到,将返回什么类型的数据。当我通过CAML查询生成器进行检查时,我只得到文本。同样在我的p中eople选择器字段(resourcename)我使用的是'Name'类型。这两者之间有什么区别吗?没有错误,我没有得到任何数据。
<Where>
  <Eq>
     <FieldRef Name='Author' />
     <Value Type='Integer'>
        <UserID />
     </Value>
  </Eq>
</Where>