Thursday, January 7, 2021

Get all sites and all sub sites using SharePoint online REST API?

 Created Add-in on SharePoint instance with following permission xml

<AppPermissionRequests>

        <AppPermissionRequest Scope="http://sharepoint/content/tenant" Right="FullControl"/>

        <AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="Read"/>

</AppPermissionRequests>


Used below API to get all sites and subsites

http://devprasad007-admin.sharepoint.com/_api/search/query?querytext='contentclass:STS_Site' &rowlimit=100


https://<site_name>.sharepoint.com/_api/search/query?querytext='contentclass:STS_Site 

Path:"https://<site_name>.sharepoint.com/*"'&rowlimit=500 

Getting ALL users from SharePoint online tenant and set userprofile property via Powershell

Getting all user profiles within SharePoint tenant using SharePoint Online CSOM API

  • retrieve all the users in tenant (Get-MsolUser cmdlet)
  • iterate users and utilize SharePoint User Profiles CSOM API to retrieve user profile

function Get-SPOContext([string]$Url,[string]$UserName,[string]$Password)
{
   $context = New-Object Microsoft.SharePoint.Client.ClientContext($Url)
   $context.Credentials = Get-SPOCredentials -UserName $UserName -Password $Password
   return $context
}


function Get-SPOCredentials([string]$UserName,[string]$Password)
{
   $SecurePassword = $Password | ConvertTo-SecureString -AsPlainText -Force
   return New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName, $SecurePassword)
}



function Print-UserProfileInfo([Microsoft.SharePoint.Client.UserProfiles.PeopleManager]$PeopleManager,[string]$AccountName){
   $ctx = $PeopleManager.Context
   $accountName = "i:0#.f|membership|" + $AccountName  #claim format  
   $userProfile = $PeopleManager.GetPropertiesFor($AccountName)
   $ctx.Load($userProfile)
   $ctx.ExecuteQuery()
   Write-Host $userProfile.PersonalUrl
}

How do I pass user credentials SharePoint Online?

  SharePoint 2013 Client Object Model now has a class called SharePointOnlineCredentials

using (ClientContext Ctx = new ClientContext("http://devprasad007-admin.sharepoint.com"))  

{  

    SecureString passWord = new SecureString();

    Ctx.Credentials = new SharePointOnlineCredentials("ramp@devprasad007.onmicrosoft.com", passWord);

    Web web = Ctx.Web;

    Ctx.Load(web);

    Ctx.ExecuteQuery();

    Console.WriteLine(web.Title);

    Console.ReadLine();

Change permissions of a SharePoint list using JavaScript?

Break role inheritance for a List object and grant Full Control permissions for a current user



 var listTitle = 'Documents';

var spCtx = SP.ClientContext.get_current();

var list = spCtx.get_web().get_lists().getByTitle(listTitle);   


spCtx.load(list,'HasUniqueRoleAssignments'); 

spCtx.executeQueryAsync(

   function(){

      var hasUniqueAssgns = list.get_hasUniqueRoleAssignments();

      if(!hasUniqueAssgns) {

         list.breakRoleInheritance(false, true);

         spCtx.executeQueryAsync(

            function(){

                console.log('Success');

            }, 

            function(sender,args){

               console.log(args.get_message());    

            }

         );

      }

   }, 

   function(sender,args){

      console.log(args.get_message());    

   }

);

Web.GetFileByServerRelativeUrl throws “Value does not fall within expected range”?

 SP Online site stored in Documents, When we trying to adding/retrieving documents but in the delete flow If you get an error during retrieval of a File object.


var relativeUrl = "/sites/documentsite/Documents/images.jpg";
we have to specific or construct the full URL.