我们正在从邮件EWS转换为Microsoft Office 365 Graph API,
我想将所有文件夹树平放到平面文件夹列表中,因此列表中的每个条目都应包含:
Folder:{parentId, myId} , ...
我在测试版中看到有一个选项可以遍历:
https://graph.microsoft.com/beta/me/mailFolders/inbox?$top=50&$expand=childFolders($levels=5)
但不幸的是我只获得了第一级......
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#users('4ed9f9bf-cfea-47de-ba2c-e4323d2dd600')/mailFolders/$entity",
"id": "AQMkAGM5MDIzODk0LTg2NgBjLTQxN2EtOTNmMC0wYWY4M2VkMTg1MWEALgAAAxfTs4ItP_BBtfaokkhWqiMBAJ1RfNBJd7VOqHUq_F8aPdIAAAIBDQAAAA==",
"displayName": "Inbox",
"parentFolderId": "AQMkAGM5MDIzODk0LTg2NgBjLTQxN2EtOTNmMC0wYWY4M2VkMTg1MWEALgAAAxfTs4ItP_BBtfaokkhWqiMBAJ1RfNBJd7VOqHUq_F8aPdIAAAIBCQAAAA==",
"childFolderCount": 1,
"unreadItemCount": 307,
"totalItemCount": 320,
"wellKnownName": "inbox",
"childFolders@odata.context": "https://graph.microsoft.com/beta/$metadata#users('4ed9f9bf-cfea-47de-ba2c-e4323d2dd600')/mailFolders('AQMkAGM5MDIzODk0LTg2NgBjLTQxN2EtOTNmMC0wYWY4M2VkMTg1MWEALgAAAxfTs4ItP_BBtfaokkhWqiMBAJ1RfNBJd7VOqHUq_F8aPdIAAAIBDQAAAA%3D%3D')/childFolders",
"childFolders": [
{
"id": "AAMkAGM5MDIzODk0LTg2NmMtNDE3YS05M2YwLTBhZjgzZWQxODUxYQAuAAAAAAAX07OCLT-gQbX2qJJIVqojAQCdUXzQSXe1Tqh1KvhfGj3SAAOojCnvAAA=",
"displayName": "LEVEL_1",
"parentFolderId": "AQMkAGM5MDIzODk0LTg2NgBjLTQxN2EtOTNmMC0wYWY4M2VkMTg1MWEALgAAAxfTs4ItP_BBtfaokkhWqiMBAJ1RfNBJd7VOqHUq_F8aPdIAAAIBDQAAAA==",
"childFolderCount": 1,
"unreadItemCount": 0,
"totalItemCount": 0,
"wellKnownName": null
}
]
}
是否有一个好的API使用O-Data或其他遍历算法(如EWS - 深度遍历),所以我可以减少我的其余API调用......
谢谢=]
答案 0 :(得分:2)
Microsoft Graph API中没有深层文件夹遍历调用。您需要扩展每个级别。您可能需要为此打开feature request。
话虽如此,您可以使用batch feature来减少为获取文件夹层次结构而必须进行的调用次数。只要文件夹层次结构不超过任何级别的20个文件夹(参见batch restrictions),您就可以进行单个批处理调用,以跨层次结构获取给定级别的所有文件夹。您想在任何级别上占20个以上的文件夹。
关于执行此操作的算法,我没有看到这种情况,因此您可能是使用批处理算法的Microsoft Graph深层文件夹遍历的创建者。