OneDriveから特定のフォルダオブジェクトを取得することに喜んでいません。私はユーザーが閲覧しているフォルダに基づいてパンくずリストの軌跡を作成するようにしています。ユーザーがにクリックした場合Office 365 MyFiles API - OneドライブのID文字列を使用してFolderオブジェクトを取得する方法
var rootFiles = await spClient.Files.ExecuteAsync();
var files = rootFiles.CurrentPage;
:その後、私はそうのようなルートファイルとフォルダを取得しています
var spClient = await AuthenticationHelper.EnsureSharePointClientCreatedAsync("MyFiles");
:私はそうのようなユーザーのルートフォルダをターゲットとしているSharePointClient
をインスタンス化しています物事をキックオフする
私はそのようなフォルダとファイルをフォローしています。
var folderFiles = await spClient.Files[selectedItemID].ToFolder().Children.ExecuteAsync();
var files = folderFiles.CurrentPage;
ここでselectedItemID
は、ユーザーが選択したフォルダのプロパティーのId
です。
問題は、フォルダオブジェクト自体を取得しています。私はこれらの試みのいずれかを実行した場合は、ファイルを探している間、私は、ファイルオブジェクトを取得します
// first attempt
var folder = await spClient.Files[selectedItemID].ToFolder().ExecuteAsync();
// second attempt - which is the same as first attempt with use of GetById()
var folder = await spClient.Files.GetById(selectedItemID).ToFolder().ExecuteAsync();
// third attempt - which is the same as second attempt without chaining
var thisItemFetcher = spClient.Files.GetById(selectedItemID);
var thisFolderFetcher = thisItemFetcher.ToFolder();
var myFolder = await thisFolderFetcher.ExecuteAsync();
var folder = myFolder as Microsoft.Office365.SharePoint.FileServices.Folder;
:私は、次のいずれかを実行しようとすると
Expected a relative URL path without query or fragment.
Parameter name: entitySetName
:私はこのエラーを得続けます問題ない。
もちろん、私はこのエラーを調べてみましたが、どこにも行きませんでした。
私がやっていることはかなり簡単です。私に必要なのは、現在表示されているフォルダのユーザーと右のルートフォルダまでのそれぞれの親のための単純なオブジェクトのリスト
{
FolderID = folder.Id,
FolderName = folder.Name,
}
を返すことです。
私はfolder.ParentReference.Id
プロパティに基づいてこれを再帰的に行うことができます。
これで、ユーザーが表示しているフォルダからファイルとフォルダのリストを要求するだけの理由が考えられるかもしれません。確かに返されたファイルやフォルダに基づいて.ParentReference.Id
あなたは再帰を行うことができます。その質問に対する答えはまさにそのとおりです。フォルダが空の場合はどうなりますか?
私はここにいるこの単純ではない、それほど簡単な問題に誰かが光を当てることができますか? SkyDrive Folder object docsによると
:
A Folder object can be returned as part of:
/FOLDER_ID/files
/me/skydrive/files
/me/skydrive/shared/files
/USER_ID/skydrive/files
/ALBUM_ID/files
しかし、これはまた、Office 365のOneDriveに適用されるかどうかはわかりません。
最新OneDrive APIを見てみると、彼らは完全に異なる要求構造を使用するように見える: GET /drive/items/{item-id}
私SarePointClient.Drive
はItems
コレクションを公開していません。
私はあなたの好奇心のために、Microsoft Office 365 My Files Library v1.0.22をOneDriveにアクセスするために使用しています。
私が実際に何をしています。この場合
は、あなたが最新の.NET OneDrive SDKを使用する必要がありますMS Office 365用のMyFilesライブラリを使用しています。その代わりに、ユーザーのOneDriveを「SharePointClient.Files」コレクション経由で私に公開する「SharePointClient」があります。私の質問は、具体的には、 '' OneClient.Files.GetById( "{item_id}") ''で '' oneDriveClient.Drive.Items ["{item_id}"] ''を達成する方法を尋ねます。 – iiminov@ iiminov、ドキュメントによると、Office 365 Files APIは推奨されなくなりました。 OneDriveおよびOneDrive for Business開発では、OneDrive APIを使用します。そのため、.NET OneDrive SDKの使用をお勧めします。 –