2017-05-30 13 views
1

拡張プロパティをプライマリカレンダーに割り当てましたが、取得しようとしましたが、動作させられませんでした。拡張プロパティを取得するMicrosoftグラフjavascript api

次のドキュメントイムはgraph apijavascript sdk

以上
function postUserCalendar(emailAddress) { 
var rand = guid(); 
const values = { 
    MultiValueExtendedProperties: [{ 
    PropertyId: 'StringArray ' + '{' + rand + '}' + ' Name Palette', 
    Value: ["Green", "Aqua", "Blue"] 
    }] 
}; 
getAccessToken(function(accessToken) { 
    if (accessToken) { 
    var client = MicrosoftGraph.Client.init({ 
     authProvider: (done) => { 
     done(null, accessToken); 
     } 
    }); 
    client 
     .api('me/calendars/myCalendarId') 
     .header('Accept','application/json') 
     .patch({ 
     message: values 
     }, (err, res) => { 
     console.log(err); 
     console.log(res); 
     }); 
    } else { 
    var error = { 
     responseText: "Cound not retrieve access token" 
    }; 

    } 
}); 
} 

がMultiValueExtendedPropertiesを設定するために、私の機能です。 次に、私はそれらのプロパティを取得しようとする関数を持っています。

function getUserCalendar(emailAddress, callback) { 
getAccessToken(function(accessToken) { 
    if (accessToken) { 
    // Create a Graph client 
    var client = MicrosoftGraph.Client.init({ 
     authProvider: (done) => { 
     // Just return the token 
     done(null, accessToken); 
     } 
    }); 
    client 
     .api('/me/calendars/myCalendarId') 
     .header('X-AnchorMailbox', emailAddress) 
     .expand('multiValueExtendedProperties') 
     .filter('id eq {c56fe371-87fb-87a8-1727-9b2b272b9f76}') 
     .get((err, res) => { 
     if (err) { 
      callback(null, err); 
     } else { 
      callback(res.value); 
     } 
     }); 
    } else { 
    var error = { 
     responseText: 'Could not retrieve access token' 
    }; 
    callback(null, error); 
    } 
}); 
} 

get要求は200のステータスを持っているが、私はjQueryのエラー誰かが正しい方向に私を指すことができる場合

は、私はそれを感謝し、「Aが定義されていない」を得ます。

ありがとうございます!

答えて

3

問題を引き起こしているコードにはいくつかの間違いがあります。ここで

が間違っJSONペイロードに渡すことになりpatchへの最初のパラメータとして{message: values}を渡すカレンダーへのパッチ適用

。あなたは正しくシリアライズされる値そのものを渡す必要があります。

client 
    .api('me/calendars/myCalendarId') 
    .header('Accept','application/json') 
    .patch(values, (err, res) => { 
     console.log(err); 
     console.log(res); 
    }); 

プロパティでカレンダーを取得するには、あなたがSDKからfilterメソッドを使用する必要はありません。ここ

を拡大しました。これは、フィルタの句をGETに追加し、expandにフィルタを追加するのではなく、あなたが望むものです。その代わり、そのように、expandに渡された文字列でフィルタを埋め込む:

client 
    .api('/me/calendars/myCalendarId') 
    .header('X-AnchorMailbox', emailAddress) 
    .expand("multiValueExtendedProperties($filter=id%20eq%20'StringArray%20{66f5a359-4659-4830-9070-00050ec6ac6e}%20Name%20Palette')") 
    .get((err, res) => { 
     if (err) { 
      callback(null, err); 
     } else { 
      callback(res); 
     } 
    }); 

は我々ではなく、レガシー拡張プロパティのカスタムデータを格納するためopen extensionsを使用することをお勧めします代わりに

オープン拡張を使用することを検討してください。オープンエクステンションは柔軟性が高く、扱いやすい既存のソリューション(例えば、既存のソリューションとの後方互換性など)である必要がある魅力的な理由がない限り、公開拡張をお勧めします。

+0

ありがとうございます!私はオープンエクステンションを見ていきます! – Erskan

関連する問題