10
votes

From the documentation, I can't find any ways to get the siteId of the site where I put the webpart in.

For example,

My current site is: https://{hostname}/sites/main1 <-- NOT root site, but I want to get this siteId

and I test my webpart here: https://{hostname}/sites/main1/_layouts/15/workbench.aspx

How can I achieve this? From the documentation,

A site is addressed be a unique identifier which is a composite ID of the following values:

Site collection hostname (contoso.sharepoint.com)

Site collection unique ID (guid)

Site unique ID (guid)

I can get the hostname easily by using location.hostname (Yes, I am using JavaScript + React to build my webpart) but how to get the site-id easily with Graph API?

4

4 Answers

36
votes

Try this: https://graph.microsoft.com/v1.0/sites/{hostname}:/sites/{path}?$select=id For example: https://graph.microsoft.com/v1.0/sites/cie493742.sharepoint.com:/sites/Contoso/Operations/Manufacturing?$select=id (this one you can try on the Graph Explorer.

What you get back in the id is in this format:

{hostname},{spsite.id},{spweb.id}

For more info here is the link to the docs: https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/site_get

1
votes

Another way you can get the Site-id by below Graph Http Get API.

https://graph.microsoft.com/v1.0/sites

0
votes

You don't need to do a Graph API call to get the siteId of the current site. It is available in the PageContext.

In the main class of your webpart you can find it at:

this.context.pageContext.site.id
0
votes

On classic sites using spPageContextInfo:

(location.host + "," + _spPageContextInfo.siteId + "," + _spPageContextInfo.webId).replace(/[\{\}]/g, "")