Google Drive API v2 から v3 への移行でつまづいたいくつかの点
Google Drive API .NET を使って v2 から v3 へアプリケーションを移行するのにつまづいた点をまとめました。
1 フィールド(プロパティ)の名前が変わった
File オブジェクトのフィールド(プロパティ)が変わっています。一番影響を受けるのが、ファイルの名前で v2 では Title プロパティで取得していたのが v3 からは Name プロパティになります。ファイルの日時も ...Date から ...Time に変わりました。他にもあるかしれませんが、よく使いそうなところとしてはこんなところでしょうか。
2 ファイル情報(フィールド)の取得方法
v2 ではファイル情報は全部返してきたかと思いますが、v3 では取得するものを指定しないと Nothing (C# では null) が返されます。取得項目は GetRequest の Fields プロパティにカンマ区切りテキストで指定します。このフィールド名は大文字小文字が正確でないとエラーになります。
Public Function GetFile(ByVal id As String) As Data.File
Dim request As FilesResource.GetRequest = service.Files.Get(id)
request.Fields = "name,id,parents,size,description,modifiedTime,mimeType,owners,fileExtension,spaces,webContentLink"
Dim File As Data.File = request.Execute()
Return file
End Function
3 ファイルの場所がトップレベル(Root)かの判別
v2 では Parents コレクションの要素 (ParentRefernce 型) に IsRoot プロパティというのがあって簡単に判別できたのですが、v3 ではParents コレクションの要素は String 型(フォルダのId)に変わっています。
この Id を使って File オブジェクトを取得するとファイルの場所がトップレベル(Root)でも有効な Id が取得されます。この Id から名前 (Name プロパティ) を取得すると "マイドライブ" (日本語版の場合)となります。
したがって、ファイルの場所がトップレベルかどうかは、親のフォルダの Id を使って親の名前を取得し、それが"マイドライブ"であるかを確認するしかないようです。(どこかに IsRoot みたいのがあるかもしれませんが)
とりあえず、つまづいたところは現在のところ以上です。