Microsoft Graphへの後続の非効率的な要求を避けるため、個々のユーザーの個人用サイト(OneDrive for Business)に関する情報をコレクション内に含めることができます。
/users?$select=id,mail,mySite
でユーザーコレクションを取得するとき、Microsoft Graph APIはmySite
フィールドを照会できません。この事実はGraph API docsに記載されています。したがって、私たちは、代替を探していた、と出くわした:
GET /users?$expand=drive
または
GET /users?$expand=drives
をdrive
は、ユーザーの個人的なドライブに対応し、mySite
と同じフィールドwebUrl
を持っているので。
しかし、要求は次のエラーが発生する:
{
"error": {
"code": "InternalServerError",
"message": "Value cannot be null. Parameter name: source",
"innerError": {
"request-id": "15d69169-937a-4525-a904-e4107704d8f1",
"date": "2017-11-08T02:11:17"
}
}
}
これは有効な文書化の関係です。また、クエリのパラメータ$expand
のこの使用がサポートされていないことは文書化されていません。 $expand
は現時点ではbeta/users
でしかサポートされていないというメモhereがありますが、これも同じエラーで失敗します。 (上記のように)
エラーの潜在的な原因は、ユーザーがまだ個人的なサイトを作成していない可能性があり、したがって、私たちはそれだけで空のリストを返し、また、次の可能性があると仮定しdrives
を試してみました:
GET /users?$expand=drive&$filter=drive ne null
これはまた、Filter is not supported
というエラーを返します。そのような$filter
は使用できませんが、これは文書化されていません。ドキュメントhere(正確に理解している場合)のように、$expand=drive($select=webUrl;$filter=webUrl ne null)
のみがサポートされています。
Office機能候補プラットフォーム、スタックオーバーフロー、およびMicrosoftの技術コミュニティ開発者グループを検索しましたが、成功していませんでした。
ディスカバリAPIはまだありますが、アプリ専用トークンを使用しているため、これは実際にはオプションではありません。さらに、hereのように、Microsoft Graphもそれを置き換えると思われます。