在Python中解析Office365使用情况报告的OData返回时出现问题



我正试图将office 365 Usage analysis作为Python中的Odata对象,这样我就可以设置一个自动任务来存储数据。此处描述了该过程https://learn.microsoft.com/en-US/microsoft-365/admin/usage-analytics/enable-usage-analytics?view=o365-全世界用于在Power BI中查看此数据。但提供的数据仅为上个月的数据,我们希望查看过去2年的累积数据。我已经编写了一些可以下拉Odata对象的Python代码,但我在确定数据是否由于身份验证错误而为空时遇到了一些问题,或者我只是不知道该从哪里查找。我还没能找到太多关于这方面的信息,任何帮助都将不胜感激。尤其是如果有一种方法可以让我将这个对象保存为文件,并在一些我不知道的外部程序中查看它。这是我的代码,如果你去365管理门户并插入你的租户ID、用户名和密码,你可以自己尝试。

import requests
import pyodata
import json
import settings
SERVICE_URL = 'https://reports.office.com/pbi/v1.0/' + settings.TennantID
# Create instance of OData client
session = requests.Session()
session.auth = (settings.username, settings.password)
client = pyodata.Client(SERVICE_URL, session)
EntitySets = client.entity_sets._entity_sets['TenantClientUsage']
data = EntitySets.get_entities()
print('debug here')

简短外观中的脚本看起来不错,但由于可能存在网络问题,您需要调查由requests库处理的HTTP请求和响应。

如果存在身份验证错误,您会在控制台的client = pyodata.Client(SERVICE_URL, session)行之后看到它——其中已经是对服务的$metadata的初始请求,以构建pyodata对象模型。

这些链接应该可以帮助您查看pyodata引擎盖下的实际HTTP流量:

  • https://pyodata.readthedocs.io/en/latest/usage/advanced.html#enable-测井
  • https://stackoverflow.com/a/26460395/18118384

但问题的主要原因似乎是:您正试图使用Odata V4服务,而pyodata目前仅支持V2(对V4的支持被填充为增强(。如果您可以使用nodejs而不是python,那么现在您可以使用我们的姐妹客户端库,它同时支持odata V2和V4-https://github.com/SAP/odata-library/

https://reports.office.com/pbi/v1.0/%20odata/$metadata

<edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">

最新更新