2016-09-16 204 views
0

我遇到以下情形,我不确定如何处理。SharePoint列表项目:将列表项目级权限从一个项目复制到另一个项目

我需要能够将列表项级权限从一个列表项复制到另一个列表中的另一个列表项。换句话说:

列表A包含一个项目名为itemA。清单B包含一个名为itemB的物品。我想将itemA的item-level权限复制到itemB中。

有没有人知道一种方法来做到这一点?这可以通过使用JSOM的前端代码或工作流(2010或2013)来实现。

事情我已经尝试:

回答

1

下面的例子演示了如何通过SharePoint JSOM API复制列表项权限:

先决条件:

独有权限应分配的源和目标列表项

SP.SOD.executeFunc('SP.js', 'SP.ClientContext', 
function(){ 
    var ctx = SP.ClientContext.get_current(); 
    var sourceListItem = ctx.get_web().get_lists().getByTitle("InTasks").getItemById(1); 
    var targetListItem = ctx.get_web().get_lists().getByTitle("OutTasks").getItemById(1); 
    copyListItemPermissions(sourceListItem,targetListItem, 
     function(){ 
     console.log("Done"); 
     }, 
     function(sender,args){ 
     console.log(args.get_message()); 
     } 
    ); 
}); 

其中

function copyListItemPermissions(sourceListItem,targetListItem,success,error) 
{ 
    var ctx = targetListItem.get_context(); 
    var sourceItemPermissions = sourceListItem.get_roleAssignments(); 
    var targetItemPermissions = targetListItem.get_roleAssignments(); 
    ctx.load(sourceItemPermissions,'Include(Member)'); 
    ctx.load(targetItemPermissions,'Include(Member)'); 
    ctx.executeQueryAsync(
     function(){ 

      targetItemPermissions.get_data().forEach(function(targetAssignment){ 
       targetAssignment.deleteObject(); 
      }); 

      sourceItemPermissions.get_data().forEach(function(sourceAssignment){ 
       var principal = sourceAssignment.get_member(); 
       if(principal.get_principalType() == 1) 
        targetItemPermissions.add(principal,sourceAssignment.get_roleDefinitionBindings()); 
       else if (principal.get_principalType() == 8){ 
        var group = ctx.get_web().get_siteGroups().getById(principal.get_id()); 
        targetItemPermissions.add(group,sourceAssignment.get_roleDefinitionBindings()); 
       }  
      }); 
      targetListItem.update(); 
      ctx.executeQueryAsync(
       function(){ 
        success();  
       }, 
       error 
      );    
     }, 
     error 
    ); 
} 
+0

非常感谢!这几乎似乎在伎俩。但是,在尝试代码时,我确实收到了这个JavaScript错误: '无法找到ID为11的主体:' 任何想法? –

相关问题