2016-08-11 5 views
0

Ich verwende das Python-Skript unten, um Ereignis für Office 365 zu erstellen, und es funktioniert. Ich habe jedoch Schwierigkeiten (googeln den ganzen Tag), um herauszufinden, wie ich den Anhang mit dem Ereignis, das aus diesem Skript generiert wird, einbeziehen kann.Office 365-API - Ereignis mit Anlage erstellen

Dieser Code dient zum Erstellen des Ereignisses.

# Set the request parameters 
url = 'https://outlook.office365.com/api/v1.0/me/events?$Select=Start,End' 
user = '[email protected]' 

pwd = getpass.getpass('Please enter your AD password: ') 


# Create JSON payload 
data = { 
    "Subject": "Testing Outlock Event", 
    "Body": { 
    "ContentType": "HTML", 
    "Content": "Test Content" 
    }, 
    "Start": "2016-05-23T15:00:00.000Z", 
    "End": "2016-05-23T16:00:00.000Z", 
     "Attendees": [ 
    { 
     "EmailAddress": { 
     "Address": "[email protected]", 
     "Name": "User1" 
     }, 
     "Type": "Required" }, 

     { 
     "EmailAddress": { 
     "Address": "[email protected]", 
     "Name": "User2" 
     }, 
     "Type": "Optional" } 
    ] 
} 

json_payload = json.dumps(data) 

# Build the HTTP request 
opener = urllib2.build_opener(urllib2.HTTPHandler) 
request = urllib2.Request(url, data=json_payload) 
auth = base64.encodestring('%s:%s' % (user, pwd)).replace('\n', '') 
request.add_header('Authorization', 'Basic %s' % auth) 
request.add_header('Content-Type', 'application/json') 
request.add_header('Accept', 'application/json') 
request.get_method = lambda: 'POST' 
# Perform the request 
result = opener.open(request) 

Aber als ich versuchte Befestigung aufzunehmen, es funktioniert nicht (siehe unten mit Anhängen Code)

# Set the request parameters 
url = 'https://outlook.office365.com/api/v1.0/me/events?$Select=Start,End' 
user = '[email protected]' 

pwd = getpass.getpass('Please enter your AD password: ') 


# Create JSON payload 
data = { 
    "Subject": "Testing Outlock Event", 
    "Body": { 
    "ContentType": "HTML", 
    "Content": "Test Content" 
    }, 
    "Start": "2016-05-23T15:00:00.000Z", 
    "End": "2016-05-23T16:00:00.000Z", 
    "Attendees": [ 
    { 
     "EmailAddress": { 
     "Address": "[email protected]", 
     "Name": "User1" 
     }, 
     "Type": "Required" }, 

     { 
     "EmailAddress": { 
     "Address": "[email protected]", 
     "Name": "User2" 
     }, 
     "Type": "Optional" } 
    ], 
    "Attachments": [ 
      { 
      "@odata.type": "#Microsoft.OutlookServices.FileAttachment", 
      "Name": "menu.txt", 
      "ContentBytes": "JVBERi0xLjMNCjEgMCBvYPRg==" 
      } 
     ], 
    "HasAttachments":"true" 
} 

json_payload = json.dumps(data) 

# Build the HTTP request 
opener = urllib2.build_opener(urllib2.HTTPHandler) 
request = urllib2.Request(url, data=json_payload) 
auth = base64.encodestring('%s:%s' % (user, pwd)).replace('\n', '') 
request.add_header('Authorization', 'Basic %s' % auth) 
request.add_header('Content-Type', 'application/json') 
request.add_header('Accept', 'application/json') 
request.get_method = lambda: 'POST' 
# Perform the request 
result = opener.open(request) 

Als nächstes habe ich versucht, den Prozess zu trennen. Also habe ich zuerst das Ereignis erstellt und die eventID erfasst. Dann habe ich versucht, die eventID in die URL aufzunehmen (siehe unten), aber immer noch kein Glück.

import urllib2 
import getpass 
import os 
import json 
import sys 
import base64 
import traceback 

# Set the request parameters 
url = 'https://outlook.office.com/api/v1.0/me/events/AAMkADA1OWVjOTkxLTlmYmEtNDAwMS04YWU3LTNkNDE2YjU2OGI1ZABGBBBBBBD_fa49_h8OTJ5eGdjSTEF3BwBOcCSV9aNzSoXurwI4R0IgBBBBBBENAABOcCSV9aNzSoXurwI4R0IgAAHzfZ0mAAA=/attachments' 
user = '[email protected]' 
pwd = "password123" 

# Create JSON payload 
data = { 
     "@odata.type": "#Microsoft.OutlookServices.FileAttachment", 
     "Name": "menu.txt", 
     "ContentBytes": "VGVzdCAxMjM0NQ==" 
     } 


print data 

json_payload = json.dumps(data) 

# Build the HTTP request 
opener = urllib2.build_opener(urllib2.HTTPHandler) 
request = urllib2.Request(url, data=json_payload) 
auth = base64.encodestring('%s:%s' % (user, pwd)).replace('\n', '') 
request.add_header('Authorization', 'Basic %s' % auth) 
request.add_header('Content-Type', 'application/json') 
request.add_header('Accept', 'application/json') 
request.get_method = lambda: 'POST' 
# Perform the request 
result = opener.open(request).read() 

Alle Hilfen würden wirklich geschätzt werden.

Antwort

1

Um Anhang für das Ereignis zu erstellen, müssen wir eine weitere Anfrage senden. Hier ist die Beschreibung für creating the attachment für das exist-Ereignis.

enter image description here

Nachdem wir die Anlagen zu erstellen, müssen wir auch die Veranstaltung aktualisieren, damit andere die Änderungen sehen können.

Hier ist ein Beispiel, das die Anlage für das Ereignis zu erstellen:

Ereignisse erstellen:

POST: https://outlook.office.com/api/v2.0/me/events 
authorization: bearer {token} 
content-type: application/json 
{ 
"Subject": "Discuss the Calendar REST API", 
    "Body": { 
    "ContentType": "HTML", 
    "Content": "I think it will meet our requirements!" 
    }, 
    "Start": { 
     "DateTime": "2016-08-15T14:00:00", 
     "TimeZone": "Pacific Standard Time" 
    }, 
    "End": { 
     "DateTime": "2016-08-15T14:30:00", 
     "TimeZone": "Pacific Standard Time" 
    }, 
    "Attendees": [ 
    { 
     "EmailAddress": { 
     "Address": "[email protected]", 
     "Name": "Nan Yu" 
     }, 
     "Type": "Required" 
    } 
    ] 
} 

Anhang hinzufügen

POST: https://outlook.office.com/api/v2.0/me/events/{eventId}/attachments 
authorization: bearer {token} 
content-type: application/json 
{ 
"@odata.type":"#Microsoft.OutlookServices.FileAttachment", 
"Name":"test.txt", 
"ContentBytes":"aHR0cDovL2dpb25rdW56LmdpdGh1Yi5pby9jaGFydGlzdC1qcy9leGFtcGxlcy5odG1sDQoNCmh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9MGttZGpxZ085SVkNCjM2OjAyDQpodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PW9FVHY2djlmN3djIA0KNjoxOQ0KDQpodHRwczovL2FuZ3VsYXItdWkuZ2l0aHViLmlvL2Jvb3RzdHJhcC8=" 
} 

Die Inhalte Bytes sind die base64 Formatzeichenfolge der Textdatei und hier ist ein Beispiel, das die Textdatei konvertiert zu base64 String C#:

Convert.ToBase64String(File.ReadAllBytes(@"C:\users\user1\desktop\test.txt")) 

das Update-Ereignis

PATCH:https://outlook.office.com/api/v2.0/me/events/{eventid} 
authorization: bearer {token} 
content-type: application/json 
{ 
"Body": { 
    "ContentType": "HTML", 
    "Content": "I think it will meet our requirements!(Update attachments)" 
    } 
} 
+0

Vielen Dank für die Beantwortung. In meinem Skript muss ich also zuerst Anhang erstellen, dann das Ereignis erstellen, dann die Ereignis-ID erfassen und dann dieses Ereignis mit dem erstellten Anhang aktualisieren? Sorry, ich bin verloren, bitte helfen Sie mit ein paar Beispielcode .... geschätzt. – Milacay

+0

Da ich mit PHP nicht vertraut bin, würde ich ein Roh-REST-Beispiel im Original-Post für Ihre Referenz zur Verfügung stellen. Ich hoffe, es ist hilfreich. –

+0

Vielen Dank für Ihre Hilfe. Ich benutze Python und auch neu in Python. Ich war in der Lage, das Ereignis zu erstellen, erfassen Sie die Ereignis-ID, aber ich bin völlig stecken in, wie Sie Datei in Base64-Format konvertieren Anhang hinzufügen. Irgendein Rat? Kann ich auch verschiedene Dateierweiterungen wie PDF, doc, jpeg und excel anhängen? – Milacay

Verwandte Themen