如何通过Power Automate或Power BI获取Modern SharePoint全页面级使用统计报告?
哥们,我刚好处理过类似的需求,给你分享两种靠谱的方案,分别用Power Automate和Power BI来实现全页面级的使用统计,完全能替代手动查看单个页面的分析面板:
一、用Power Automate批量抓取页面使用数据
这个方案适合定期自动生成报告(比如每周导出到Excel),步骤如下:
第一步:获取站点所有Modern页面
新建一个云流,添加「Send an HTTP request to SharePoint」动作,配置如下:- 方法:
GET - Uri:
/_api/web/lists/getbytitle('Site Pages')/items?$select=Id,FileLeafRef,FileRef&$filter=ContentTypeId eq '0x0101009D1CB255DA76424F860D91F20E6C4118'
这个请求会筛选出站点里所有的Modern页面,返回页面ID、文件名和相对路径。
- 方法:
第二步:遍历页面获取使用分析数据
添加「Apply to each」循环,遍历第一步返回的value数组。在循环里再添加一个调用Graph API的HTTP请求:
Uri填:https://graph.microsoft.com/v1.0/sites/{你的站点ID}/pages@{item()?['Id']}/analytics/allTime
这里的站点ID可以通过「Get site properties」动作获取,或者把站点URL转换成Graph格式(比如contoso.sharepoint.com,teamsite,xxxx-xxxx-xxxx-xxxx)。这个请求会返回该页面的总浏览次数、独立访客数、最近访问时间等核心数据。第三步:存储或导出数据
把循环里获取的页面信息和使用数据拼接起来,添加「Add row into a table」动作,写入到SharePoint列表或者OneDrive里的Excel文件,之后就能直接查看汇总报告了。
注意:如果站点页面很多,记得在循环里加一个「Delay」动作(比如1秒),避免触发API限流;另外需要确保你的账号有
Sites.Read.All或Pages.Read.All的Graph权限。
二、用Power BI创建实时可视化报表
如果需要做动态分析和可视化,Power BI是更好的选择:
第一步:导入站点页面列表
打开Power BI Desktop,选择「获取数据」→「SharePoint Online列表」,连接到目标站点,选择「Site Pages」库,导入后保留Id、FileLeafRef、FileRef这些字段,过滤掉非Modern页面(用内容类型ID筛选,和上面一样)。第二步:编写自定义函数获取页面分析数据
进入Power Query编辑器,新建一个自定义函数,比如命名为GetPageAnalytics,输入参数为SiteId和PageId,函数内容如下:let Source = Json.Document(Web.Contents("https://graph.microsoft.com/v1.0/sites/" & SiteId & "/pages@" & PageId & "/analytics/allTime")), analytics = Record.SelectFields(Source, {"totalVisitors", "totalVisits", "lastVisitedDateTime"}) in analytics然后把这个函数应用到页面列表的每一行,合并出包含使用数据的新表。
第三步:创建可视化报表
现在你有了所有页面的使用数据,可以创建柱状图(按页面浏览次数排序)、卡片图(总页面数、总访客数)等可视化组件,还能设置刷新计划,让报表实时更新。
注意:第一次调用Graph API时,Power BI会提示你授权,确保授予对应的读取权限;如果遇到Web.Contents的权限问题,可以在Power Query的「数据源设置」里调整隐私级别。
备注:内容来源于stack exchange,提问作者JuTrust

