Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

Reply
Alex_Roughag
Regular Visitor

Getting SharePoint activity report into Power Bi

Hello,

I'm trying to load a SharePoint Site Usage Detail (https://graph.microsoft.com/v1.0/reports/getSharePointSiteUsageDetail(period='D180')) report with OData feed into Power Bi, but I'm getting an error "Access to the resource is forbidden", even though I can easily download https://graph.microsoft.com/V1.0/groups data.

I use a Global Administrator and I tried to add SharePoint Administrator and Reports Reader roles, but the error remains.

Is there any way I can get that report or is there a workaround?

Thank you.

 

 

1 ACCEPTED SOLUTION
v-xiaocliu-msft
Community Support
Community Support

Hi @Alex_Roughag ,

 

Have a good day. I made a sample for you.

1\ Registe app in Entra ID and get client id, token link.

vxiaocliumsft_0-1722577029697.png

vxiaocliumsft_1-1722577035204.png

2\ Set permission

vxiaocliumsft_2-1722577099811.png

vxiaocliumsft_3-1722577111144.png

vxiaocliumsft_4-1722577125989.png

3\ Add secret and copy it

vxiaocliumsft_5-1722577147659.png

4\ Create a blank query in BI desktop

vxiaocliumsft_6-1722577159014.png

 

let

    //POST Request
    url = "<token link>",
    body = [
        scope = https://graph.microsoft.com/.default,
        client_id = "<client id>",
        client_secret="<secret value>",
        grant_type = "client_credentials"
    ],


     GetJson =
        Json.Document(
            Web.Contents(
                url, [
                    Headers=[
                        Accept="application/json", 
                        #"Content-Type"="application/x-www-form-urlencoded"
                    ], 
                    Content= Text.ToBinary(Uri.BuildQueryString(body))
                ]
            )
        ),
    access_token = GetJson[access_token],
    url2= https://graph.microsoft.com/v1.0,
    Result= Csv.Document(Web.Contents(url2, [RelativePath="/reports/getSharePointSiteUsageDetail(period='D180')", Headers=[Accept="*/*", authorization="Bearer "&access_token]]),[Delimiter=",", Columns=15, Encoding=65001, QuoteStyle=QuoteStyle.None]),
    #"Promoted Headers" = Table.PromoteHeaders(Result, [PromoteAllScalars=true]),
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Report Refresh Date", type date}, {"Site Id", type text}, {"Site URL", type text}, {"Owner Display Name", type text}, {"Is Deleted", type logical}, {"Last Activity Date", type date}, {"File Count", Int64.Type}, {"Active File Count", Int64.Type}, {"Page View Count", Int64.Type}, {"Visited Page Count", Int64.Type}, {"Storage Used (Byte)", Int64.Type}, {"Storage Allocated (Byte)", Int64.Type}, {"Root Web Template", type text}, {"Owner Principal Name", type text}, {"Report Period", Int64.Type}})
in
    #"Changed Type"

 

5 Upload to service and set certification.

vxiaocliumsft_7-1722577189670.png

 

vxiaocliumsft_8-1722577196485.png

 

Best Regards,

Wearsky

View solution in original post

2 REPLIES 2
Alex_Roughag
Regular Visitor

Thank you @v-xiaocliu-msft that works.

The only correction is that URL needs to be in quotes in order the query to work.

v-xiaocliu-msft
Community Support
Community Support

Hi @Alex_Roughag ,

 

Have a good day. I made a sample for you.

1\ Registe app in Entra ID and get client id, token link.

vxiaocliumsft_0-1722577029697.png

vxiaocliumsft_1-1722577035204.png

2\ Set permission

vxiaocliumsft_2-1722577099811.png

vxiaocliumsft_3-1722577111144.png

vxiaocliumsft_4-1722577125989.png

3\ Add secret and copy it

vxiaocliumsft_5-1722577147659.png

4\ Create a blank query in BI desktop

vxiaocliumsft_6-1722577159014.png

 

let

    //POST Request
    url = "<token link>",
    body = [
        scope = https://graph.microsoft.com/.default,
        client_id = "<client id>",
        client_secret="<secret value>",
        grant_type = "client_credentials"
    ],


     GetJson =
        Json.Document(
            Web.Contents(
                url, [
                    Headers=[
                        Accept="application/json", 
                        #"Content-Type"="application/x-www-form-urlencoded"
                    ], 
                    Content= Text.ToBinary(Uri.BuildQueryString(body))
                ]
            )
        ),
    access_token = GetJson[access_token],
    url2= https://graph.microsoft.com/v1.0,
    Result= Csv.Document(Web.Contents(url2, [RelativePath="/reports/getSharePointSiteUsageDetail(period='D180')", Headers=[Accept="*/*", authorization="Bearer "&access_token]]),[Delimiter=",", Columns=15, Encoding=65001, QuoteStyle=QuoteStyle.None]),
    #"Promoted Headers" = Table.PromoteHeaders(Result, [PromoteAllScalars=true]),
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Report Refresh Date", type date}, {"Site Id", type text}, {"Site URL", type text}, {"Owner Display Name", type text}, {"Is Deleted", type logical}, {"Last Activity Date", type date}, {"File Count", Int64.Type}, {"Active File Count", Int64.Type}, {"Page View Count", Int64.Type}, {"Visited Page Count", Int64.Type}, {"Storage Used (Byte)", Int64.Type}, {"Storage Allocated (Byte)", Int64.Type}, {"Root Web Template", type text}, {"Owner Principal Name", type text}, {"Report Period", Int64.Type}})
in
    #"Changed Type"

 

5 Upload to service and set certification.

vxiaocliumsft_7-1722577189670.png

 

vxiaocliumsft_8-1722577196485.png

 

Best Regards,

Wearsky

Helpful resources

Announcements
Europe Fabric Conference

Europe’s largest Microsoft Fabric Community Conference

Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.

AugPowerBI_Carousel

Power BI Monthly Update - August 2024

Check out the August 2024 Power BI update to learn about new features.

August Carousel

Fabric Community Update - August 2024

Find out what's new and trending in the Fabric Community.