2016-10-28 10 views
0

ノード(特にノードアウトnpmモジュール)を使用してOutlook.comの予定表をプルすると、基本要求が機能しています。私はAPIから結果を取り戻していますが、今日の結果だけを返すためにoDataリクエストパラメータに問題があります。ここで私が持っているものです:Outlookの予定表APIの結果を日付でフィルタリングする

var queryParams = { 
    '$select': 'Subject,Start,End', 
    '$orderby': 'Start/DateTime desc', 
    //'$top': 10, 
    'startDateTime': startDateString, 
    'endDateTime': endDateString 
    //'$filter': "Start/DateTime ge " + startDateString + " and Start/DateTime le " + endDateString 

}; 

outlook.base.setApiEndpoint('https://outlook.office.com/api/v2.0'); 
outlook.base.setAnchorMailbox(<my email address>); 
outlook.base.setPreferredTimeZone('Europe/London'); 

outlook.calendar.getEvents({token:token, odataParams: queryParams},function(error, result){ 
    //Do some stuff with the event data here 
} 

私はパラメータを使用している場合しかし、私はまだ、過去に、将来的には両方のイベントを取り戻すよ(startDateStringが2016-10-28T00:00:00で、endDateStringが2016-10-28T23:59:59です)上に示されています。

これは私の望むものではありません。私が望んでいたのは、現時点のイベント(つまり、oData $filterを使用しようとした試みですが、APIはそれほど好きではないようです互換性のない2項演算子)。

誰でも、今日予定されているイベントを戻すためにparamsで修正する必要があることについてアドバイスできますか?

おかげ

EDIT:(タイムゾーン情報が含まれます)値を作成したり、イベントを更新するときenter image description here

答えて

1

それを見つけ出しました(少なくとも私にとってはthis SO question did it

時間が引用符で囲まれている必要があります。

var queryParams = { 
       '$orderby': 'Start/DateTime desc', 
       '$filter': "Start/DateTime ge '" + startDateString + "' and Start/DateTime le '" + endDateString + "'" 

      }; 

そして今は動作しています。

Grrr!

1

StartDateTimeEndDateTimeプロパティはDateTimeTimeZone値として表される:ここで私が返さなってるものの一例です:

"StartDateTime": { 
    "DateTime": "2016-10-28T00:00:00", 
    "TimeZone": "Europe/London" //current time zone 
} 

はUTC値に変換取得されています

"StartDateTime": { 
    "DateTime": "2016-10-27T23:00:00", 
    "TimeZone": "UTC" 
} 

フィルタリング操作も同様です。そのため、startDateStringendDateTimeの値は、今日のイベントを取得するために、現地時間からUTCに変換する必要があります。 Moment.js library使用たとえば

var startDateStringUtc = moment(startDateString).toISOString(); 
var endDateStringUtc= moment(endDateString).toISOString(); 

var queryParams = { 
    '$select': 'Subject,Start,End', 
    '$orderby': 'Start/DateTime desc', 
    //'$top': 10, 
    'startDateTime': startDateStringUtc, 
    'endDateTime': endDateStringUtc 
    //'$filter': "Start/DateTime ge " + startDateString + " and Start/DateTime le " + endDateString 

}; 

についてDateTimeTimeZone構造

よれMSDNには:

は時点の日付、時刻、およびタイムゾーンを記述します。 ISO 8601 フォーマットに従って

  • DateTimeDateTime合わせ日時表現(T)での時間の一点。
  • TimeZoneString次のタイムゾーン名のいずれか。
イベントが

OriginalStartTimezoneOriginalEndTimezoneを作成したとき を反映するために意図されているタイムゾーンを決定する方法

何タイムゾーンイベントが作成または更新時に設定された

+0

私はこれをやってみましたが、過去と未来のイベントを取り戻しました....値は2016-10-31T00:00:00.000Zと2016-10-31T23:59:59.000Zです – LDJ

関連する問題