[アーティクル]
05/06/2022
3 人の共同作成者
この記事の内容
名前空間: microsoft.graph
指定したフォルダーで追加、削除、更新された連絡先のセットを取得します。
フォルダー内の連絡先に対する デルタ 関数呼び出しと GET 要求とは似ていますが、状態トークン をこれらの呼び出しに適切に適用することにより、そのフォルダーの連絡先の増分変更をクエリできる点が異なります。これにより、ユーザーの連絡先のローカル ストアの保守と同期を行う際に、連絡先のセット全体を毎回サーバーからフェッチする必要がなくなります。
アクセス許可
この API を呼び出すには、次のいずれかのアクセス許可が必要です。アクセス許可の選択方法などの詳細については、「アクセス許可 」を参照してください。
アクセス許可の種類
アクセス許可 (特権の小さいものから大きいものへ)
委任 (職場または学校のアカウント)
Contacts.Read、Contacts.ReadWrite
委任 (個人用 Microsoft アカウント)
Contacts.Read、Contacts.ReadWrite
アプリケーション
Contacts.Read、Contacts.ReadWrite
HTTP 要求
GET /me/contactFolders/{id}/contacts/delta
GET /users/{id}/contactFolders/{id}/contacts/delta
クエリ パラメーター
連絡先の変更を追跡すると、一連の デルタ 関数呼び出しが発生します。任意のクエリ パラメーター ($deltatoken と $skiptoken 以外) を使用する場合は、最初の デルタ 要求でこれを指定する必要があります。Microsoft Graph は、応答で提供される @odata.nextLink または @odata.deltaLink の URL のトークン部分に指定したパラメーターを自動的にエンコードします。必要なクエリ パラメーターを前もって指定しておくだけで済みます。それ以降の要求では、前の応答で @odata.nextLink または @odata.deltaLink の URL に必要なパラメーターが既にエンコードされ、含まれているため、この URL をコピーして適用します。
クエリ パラメーター
種類
説明
$deltatoken
string
同じ連絡先コレクションの前の デルタ 関数呼び出しの @odata.deltaLink URL で 状態トークン が返され、変更追跡のその回が完了したことを示します。このコレクションについて、このトークンを含む @odata.deltaLink URL 全体を、変更追跡の次の回の最初の要求に保存し、適用します。
$skiptoken
string
前の デルタ 関数呼び出しの @odata.nextLink URL で 状態トークン が返され、同じ連絡先コレクションに追跡すべき変更が他にもあることを示します。
OData クエリ パラメーター
任意の GET リクエストと同様に $select クエリ パラメーターを使用して、最善のパフォーマンスを得るために必要なプロパティのみを指定することができます。Id プロパティは常に返されます。
名前
型
説明
Authorization
string
ベアラー {token}。必須。
Content-Type
string
application/json. Required.
Prefer
string
odata.maxpagesize={x}.省略可能。
応答
成功した場合、このメソッドは 200 OK 応答コードと、応答本文で contact コレクション オブジェクトを返します。
例
要求
デルタ 関数の呼び出しを 1 つ作成し、$select パラメーターを使用して各連絡先の displayName プロパティのみを取得し、応答本文に含まれる連絡先の最大数を 2 に制限する方法を示します。
フォルダー内の連絡先の変更を追跡するには、1 つ以上の デルタ 関数呼び出しを作成し、適切な状態トークンを使用して、前回のデルタ クエリ以降になされた一連の増分変更を取得します。
メール フォルダー内のメッセージ変更を追跡するために状態トークンを使用する方法を示す同様の例については、次をご覧ください。フォルダー内のメッセージへの増分の変更を取得する 。フォルダー内の連絡先の追跡とメッセージの追跡の主な違いは、デルタ クエリ要求 URL のほかに、クエリ応答で メッセージ コレクションではなく contact が返されることです。
GET https://graph.microsoft.com/v1.0/me/contactFolders/{id}/contacts/delta?$select=displayName
Prefer: odata.maxpagesize=2
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var delta = await graphClient.Me.ContactFolders["{contactFolder-id}"].Contacts
.Delta()
.Request()
.Header("Prefer","odata.maxpagesize=2")
.Select("displayName")
.GetAsync();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する 方法の詳細については、SDK のドキュメントを参照してください 。
const options = {
authProvider,
};
const client = Client.init(options);
let delta = await client.api('/me/contactFolders/{id}/contacts/delta')
.header('Prefer','odata.maxpagesize=2')
.select('displayName')
.get();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する 方法の詳細については、SDK のドキュメントを参照してください 。
MSHTTPClient *httpClient = [MSClientFactory createHTTPClientWithAuthenticationProvider:authenticationProvider];
NSString *MSGraphBaseURL = @"https://graph.microsoft.com/v1.0/";
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[MSGraphBaseURL stringByAppendingString:@"/me/contactFolders/{id}/contacts/delta?$select=displayName"]]];
[urlRequest setHTTPMethod:@"GET"];
[urlRequest setValue:@"odata.maxpagesize=2" forHTTPHeaderField:@"Prefer"];
MSURLSessionDataTask *meDataTask = [httpClient dataTaskWithRequest:urlRequest
completionHandler: ^(NSData *data, NSURLResponse *response, NSError *nserror) {
NSError *jsonError = nil;
MSCollection *collection = [[MSCollection alloc] initWithData:data error:&jsonError];
MSGraphContact *contact = [[MSGraphContact alloc] initWithDictionary:[[collection value] objectAtIndex: 0] error:&nserror];
}];
[meDataTask execute];
SDK をプロジェクトに追加し、authProvider インスタンスを作成する 方法の詳細については、SDK のドキュメントを参照してください 。
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
LinkedList<Option> requestOptions = new LinkedList<Option>();
requestOptions.add(new HeaderOption("Prefer", "odata.maxpagesize=2"));
ContactDeltaCollectionPage delta = graphClient.me().contactFolders("{id}").contacts()
.delta()
.buildRequest( requestOptions )
.select("displayName")
.get();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する 方法の詳細については、SDK のドキュメントを参照してください 。
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClient(requestAdapter)
requestParameters := &msgraphsdk.DeltaRequestBuilderGetQueryParameters{
Select: "displayName",
}
headers := map[string]string{
"Prefer": "odata.maxpagesize=2"
}
options := &msgraphsdk.DeltaRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
Headers: headers,
}
contactFolderId := "contactFolder-id"
result, err := graphClient.Me().ContactFoldersById(&contactFolderId).Contacts().Delta()(contactFolder-id).GetWithRequestConfigurationAndResponseHandler(options, nil)
SDK をプロジェクトに追加し、authProvider インスタンスを作成する 方法の詳細については、SDK のドキュメントを参照してください 。
Import-Module Microsoft.Graph.Users.Functions
# A UPN can also be used as -UserId.
Get-MgUserContactFolderContactDelta -UserId $userId -ContactFolderId $contactFolderId -Property "displayName"
SDK をプロジェクトに追加し、authProvider インスタンスを作成する 方法の詳細については、SDK のドキュメントを参照してください 。
応答
要求が成功すると、応答には状態トークンが含まれます。これは、skipToken
(@odata.nextLink 応答ヘッダーに含まれる) か、deltaToken (@odata.deltaLink 応答ヘッダーに含まれる) のいずれかになります。前者はその回を続行する必要があることを示し、後者はその回のすべての変更の取得が完了したことを示します。
以下の応答は、@odata.nextLink 応答ヘッダーに含まれる skipToken を示しています。
注: ここに示す応答オブジェクトは、読みやすさのために短縮されている場合があります。
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.nextLink":"https://graph.microsoft.com/v1.0/me/contactfolders/{id}/contacts/delta?$skiptoken={_skipToken_}",
"value": [
{
"parentFolderId": "parentFolderId-value",
"birthday": "2016-10-19T10:37:00Z",
"fileAs": "fileAs-value",
"displayName": "displayName-value",
"givenName": "givenName-value",
"initials": "initials-value"
}
]
}
関連項目