2017-11-17 18 views
1

Get metadata for a listのドキュメントに従っています。SharePointリストでフィールドが完全に機能しない

PowerShellまたはグラフエクスプローラーを使用してクエリを実行すると、SharePointリスト内の項目のフィールドが完全に展開されません。

例として、Responsibleというルックアップフィールドがあり、これはAzure Active Directory(またはSharePointの用語では、列はPerson or Group列であり、人のみに限定されます)でユーザーを検索します。

GUIを選択すると、表示名が入力されます(ただし、より明確な情報をバックエンドに保存することを希望します(UPNなど)。

フォームを使用してグラフAPIを照会する場合:あなたは、フィールドResponsibleLookupIdがちょうど有用ではありません14の値を与えていることがわかります

@odata.etag    : "REMOVED" 
Title      : Storage Platform 
Description    : Central storage platform 
ResponsibleLookupId  : 14 
Responsible2LookupId  : 13 
AccountableLookupId  : 3 
Features     : NFS 
AudienceLookupId   : 92 
RequestProcess   : {@{LookupId=1; LookupValue=Service Desk}} 
Support     : {@{LookupId=1; LookupValue=Service Desk}} 
AvailabilityLookupId  : 1 
DependsOn     : {} 
O365GroupLookupId   : 87 
LifecycleStageLookupId : 2 
ConsultLookupId   : 88 
id      : 1 
ContentType    : Item 
Modified     : 2017-11-17T10:47:07Z 
Created     : 2017-11-17T10:47:07Z 
_UIVersionString   : 1.0 
Attachments    : False 
Edit      : 
LinkTitleNoMenu   : Storage Platform 
LinkTitle     : Storage Platform 
ItemChildCount   : 0 
FolderChildCount   : 0 
_ComplianceFlags   : 
_ComplianceTag   : 
_ComplianceTagWrittenTime : 
_ComplianceTagUserId  : 

$Uri = "https://graph.microsoft.com/v1.0/sites/$($SPSite.id)/lists/$($ServiceList.id)/items?expand=fields" 
$Data = Invoke-RestMethod -Headers @{Authorization = "Bearer $accesstoken"} -Uri $Uri -Method Get -ErrorAction Stop 

我々はこのような何かを得ます。他のフィールドはOffice 365グループにリンクしますが、再度値を返します。したがって、このデータのいずれかをユーザー/グループにリンクすることは不可能であり、ポータルを介して見ている場合を除いて、価値は非常に限られています。

このデータを拡張するにはどうすればよいですか? API呼び出しによって後で提供されるのか、それともさらなるルックアップを実行する必要がありますか?

答えて

2

デフォルトでは、Microsoft Graphは参照フィールドにLookupIdを返します。そのフィールドに具体的に$selectパラメータを要求することによって、実際の値を提供するように要求することができます。いうよりも、displayNameを返します。次のクエリを使用して

LookupIdResponsibleのために:あなたは、これはFieldValueSetのドキュメントにどのように機能するかについて読むことができます

...items?expand=fields($select=Responsible) 

userPrincipalNameを返すためとして、現在、あなたはUserVoiceを訪問し、あなたの提案を追加することをお勧めします.I(それはどちらかLookupIddisplayNameだ)、それは戻り値を制御することはできません。

+1

ありがとう - これは動作します。 expand = fieldsはすべてのフィールドを拡張し、最後に($ select =)を追加すると、単にそのリストを改良するだけである(PowerShellの 'Select-Object'への配管と同じように)。私たちは、よりユニークで使いやすいdisplaynameの代わりに、フィールドの電子メールの選択/保存(?)を強制することができます。しかし、12フィールドの最大ルックアップについては残念です。私はUserVoiceに向かいます。 – Robin

+0

私は同意します、電子メールアドレスはより良い選択肢ですが、残念ながら人々は常にデフォルトを制御するとは限りません。あなたがResponsibleExpandedを求めて、ちょうどどちらか一方の代わりに完全なオブジェクトを得ることができればいいでしょう。 12については、私が最初に仕事を始めたときと同じ反応を示しました。実際には、12個のフィールドが一度にコレクションから表面に出てくるので、私はほとんど限界に遭わなかった。 –

関連する問題