2017-01-11 2 views
1

Я пытаюсь получить события из календаря Outlook с помощью API. Я только хочу получить события после сегодняшнего дня. Я использую следующий код (который является в основном вырезать и вставить из учебника Microsoft Office):API календаря Outlook - Python

def make_api_call(method, url, token, user_email, payload = None, parameters = None): 
    # Send these headers with all API calls 
    headers = { 'User-Agent' : 'python_tutorial/1.0', 
       'Authorization' : 'Bearer {0}'.format(token), 
       'Accept' : 'application/json', 
       'X-AnchorMailbox' : user_email } 

    # Use these headers to instrument calls. Makes it easier 
    # to correlate requests and responses in case of problems 
    # and is a recommended best practice. 
    request_id = str(uuid.uuid4()) 
    instrumentation = { 'client-request-id' : request_id, 
         'return-client-request-id' : 'true' } 

    headers.update(instrumentation) 

    response = None 

    if (method.upper() == 'GET'): 
     response = requests.get(url, headers = headers, params = parameters) 
     print response.url 
    elif (method.upper() == 'DELETE'): 
     response = requests.delete(url, headers = headers, params = parameters) 
    elif (method.upper() == 'PATCH'): 
     headers.update({ 'Content-Type' : 'application/json' }) 
     response = requests.patch(url, headers = headers, data = json.dumps(payload), params = parameters) 
    elif (method.upper() == 'POST'): 
     headers.update({ 'Content-Type' : 'application/json' }) 
     response = requests.post(url, headers = headers, data = json.dumps(payload), params = parameters) 

    return response 

Эта функция вызывается из следующих функций:

get_events_url = outlook_api_endpoint.format('/Me/Events') 

    query_parameters = {'$select': 'Subject,Start,End', 
         '$orderby': 'Start/DateTime ASC', 
         'startDateTime' : datetime.datetime.now().isoformat(),} 

    r = make_api_call('GET', get_events_url, access_token, user_email, parameters = query_parameters) 

Он просто возвращает первые 10 записей в календарь, а не записи с сегодняшнего дня. Как мне вернуть записи для определенных дат?

ответ

0

Я нашел решение, которое работает для меня. Во-первых, я изменил события calendarview, я капитализируются StartDateTime и добавил EndDateTime так это выглядит следующим образом:

get_events_url = outlook_api_endpoint.format ('/ Me/calendarview')

query_parameters = {'$select': 'Subject,Start,End', 
         '$orderby': 'Start/DateTime ASC', 
         'StartDateTime' : datetime.datetime.now().isoformat(), 
         'EndDateTime' : datetime.datetime(2100,12,31),} 

    r = make_api_call('GET', get_events_url, access_token, user_email, parameters = query_parameters) 

Это работает так Я счастлив