2016-09-16 266 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的主體:' 任何想法? –

相關問題