2014-10-13 1 views
0

Office 365 API tool for Visual Studio 2013 (update 3)의 새 여름 릴리스를 사용하려고합니다. 그것은 누락 된 기능이라고도 부를 수있는 하나의 문제를 제외하고는 잘 작동합니다.Office 365 MyFiles API - One Drive 폴더의 루트에서 직접 자식을 얻는 방법

새로 추가 된 SharePointClient 라이브러리를 사용하여 비즈니스 문서 라이브러리의 One Drive에서 루트 폴더의 직접 하위 항목을 검색하는 합리적인 방법이 없습니다.

SharePointClient.Files의 API 호출은 하위 폴더를 비롯한 전체 문서 라이브러리에서 모든 파일과 폴더를 검색합니다. 그래서 직접적인 아이들 만 얻으려면 모든 문서와 폴더를 통해 페이지를 찾아 URL을 분석해야합니다. 내 응용 프로그램 시나리오에서는 허용되지 않습니다. 하위 폴더의 경우 다음과 같은 직접 자식을 얻을 수 있습니다. SharePointClient.Files["<folder_id>"].ToFolder().Children 이것이 필요하지만 루트 폴더에는 적용 할 수 없습니다.

직접 REST API를 사용하려고했는데 비슷하게 GET ../_api/files 요청은 기본 문서 라이브러리의 모든 파일과 폴더를 검색하며 그 중 직접적인 하위 항목 만 나열하는 간단한 방법을 찾지 못했습니다. 뿌리. 또한 SharePointClient.Files이 자동으로 사용하는 기본 문서 라이브러리의 경로 또는 GUID를 가져 오는 편리한 방법은 없습니다. REST API 호출의 결과 XML 구문 분석 다른 REST API를 사용하여 루트 폴더에 대해 파일 및 폴더를 개별적으로 나열하도록 기본 문서 라이브러리의 GUID를 가져올 수 있지만 이러한 호출은 다른 XML 스키마를 생성합니다 SharePointClient에서 사용하는 것과 다릅니다. 즉, 루트의 직접 자식 만 얻으려면 전체 SharePointClient 라이브러리를 다시 구현해야합니다.

누군가에게 좋은 충고가 있다면 매우 감사 할 것입니다.

+0

이 문제는 Office 365 API –

답변

0

방금 ​​같은 문제가 발생했습니다. API 도구의 출시 버전 이전에 해결 될 수 있기를 바랍니다. 여기에 난 단지 루트 폴더의 콘텐츠 얻기 위해 무슨 짓을했는지입니다 : 당신은 IPagedCollection 래퍼를 잃고 당신이 'CurrentPage'모든 파일을 볼 수있는 것보다 더 많은 것을 얻을 필요가 있습니다

[Create your spClient = SharePointClient] 
var allFiles = await spClient.Files.ExecuteAsync(); 
var rootFiles = allFiles.CurrentPage.Where(i => !i.Id.Contains("/")); 

을하지만, 이것은 최선의 해결 방법 I이다 찾았 어. 그런 다음 하위 폴더의 내용을 나열하기 위해 위에서 언급 한 'ToFolder()'메서드를 사용할 수 있습니다.

+0

의 최신 릴리스에서 해결되었으므로 ID로 폴더 개체를 가져 오는 방법을 알지 못합니다. "spClient.Files.GetById ("folder_id ")를 기다리십시오 .. ToFolder(). ExecuteAsync())''? – iiminov