使用用户信息列表创建联系人列表

时间:2014-06-13 09:09:56

标签: sharepoint

我想使用用户信息列表中的信息填充sharepoint 2013基础中的列表。用户信息列表位于/_catalogs/users/simple.aspx,包含用户的所有条目。

是否可以使用powershell或任何其他方法执行此操作,而不是使用c#,vb等...

1 个答案:

答案 0 :(得分:1)

以下示例演示如何使用JSOM

填充用户信息列表中的信息填充联系人列表
(function(){
   var context = SP.ClientContext.get_current();
   var userInfoList = context.get_site().get_rootWeb().get_siteUserInfoList();   //source list
   var userItems = userInfoList.getItems(SP.CamlQuery.createAllItemsQuery());
   var contactsList = context.get_site().get_rootWeb().get_lists().getByTitle('Contacts');  //target list

   context.load(contactsList);
   context.load(userItems);
   context.executeQueryAsync(
   function(){


       for(var i = 0; i < userItems.get_count();i++){
           var item = userItems.getItemAtIndex(i);

           //mapping properties from user item to contact item  
           var contactEntry = {
             'Title': item.get_item('Title'), 
             'FullName': item.get_item('Name'),
             'Email': item.get_item('EMail'),
             'WorkPhone': item.get_item('MobilePhone'),
             'WebPage': item.get_item('WebSite')
           };
           //prepare contact item
           createContact(contactsList,contactEntry);

       }


       context.executeQueryAsync(
       function(){
          console.log('Completed');      
       }, 
       function(sender,args){
          console.log(args.get_message());    
       });

   }, 
   function(sender,args){
      console.log(args.get_message());    
   });

   function createContact(list, itemProps)
   {
        var itemCreateInfo = new SP.ListItemCreationInformation();
        var listItem = list.addItem(itemCreateInfo);
        for(var propName in itemProps) {
           listItem.set_item(propName, itemProps[propName]) 
        }
        listItem.update();    
   }


})();
  

如果需要,可以将脚本转换为PowerShell脚本。