Ich hab mich jetzt mit Python und der Office365-Api beschäftigt und bin auf folgenden Code gekommen, der mir mit Python ein Event in Outlook erzeugt, bzw. dieses wieder löscht:
erzeugen
Code: Alles auswählen
#!/usr/bin/python
import urllib2
import getpass
import os
import json
import sys
import base64
# Set the request parameters
url = 'https://outlook.office365.com/api/v1.0/me/events?$Select=Start,End'
user = 'email@adresse'
pwd = getpass.getpass('Please enter your AD password: ')
# Create JSON payload
data = {
"Subject": "My Subject",
"Body": {
"ContentType": "HTML",
"Content": ""
},
"Start": "2016-02-21T14:00:00-05:00",
"StartTimeZone": "Central Europe Standard Time",
"End": "2016-02-21T15:00:00-05:00",
"EndTimeZone": "Central Europe Standard Time",
}
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 = json.load(opener.open(request))
print result.get("Id")
löschen
Code: Alles auswählen
#!/usr/bin/python
import urllib2
import getpass
import os
import json
import sys
import base64
# Set the request parameters
url = 'https://outlook.office365.com/api/v1.0/me/events/<EVENDID>'
user = 'email@adresse'
pwd = getpass.getpass('Please enter your AD password: ')
# Build the HTTP request
opener = urllib2.build_opener(urllib2.HTTPHandler)
request = urllib2.Request(url)
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: 'DELETE'
# Perform the request
result = opener.open(request)
Wobei <EVENTID> durch die 153 Zeichen langen ID des zuvor erzeugten Events zu ersetzen ist.
Das ganze läuft bisher nur auf der Shell unter Linux. Unter Windows konnte ich das noch nicht testen.
Die Serverantwort erfolgt als JSON.
Jetzt habe ich dazu ein paar Fragen...
Die Einbindung von Python-Skripten und die Bearbeitung in ein Base-Dokument ist ja etwas "aufwändig".
Das Absetzen des HTTP-Requests müsste ja auch mit Starbasic zu erledigen sein...
Ich hab hier schon einen Beispielcode gefunden, der funktioniert. Allerdings weiß ich noch nicht, wie die Authentifizierung zu erledigen ist.
Code: Alles auswählen
Sub gethttpfromurl
sURL = "http://www.digitallook.com/cgi-bin/dlmedia/security.cgi?username=&ac=&csi=10088"
myfilepath = "c:/users/public/html.txt"
oSFA = createUNOService ("com.sun.star.ucb.SimpleFileAccess")
oInpDataStream = createUNOService ("com.sun.star.io.TextInputStream")
oInpDataStream.setInputStream(oSFA.openFileRead(sUrl))
for x = 0 to 3
mytext = oInpDataStream.readLine()
msgbox mytext
next x
End Sub
Und dann stell ich mir die Frage, wie ich die JSON-Antwort des Outlook-Servers parsen kann... mit Starbasic. Gibt es dazu überhaupt etwas?
Wenn ich das mit Python löse... Dazu muss ja am Rechner Python installiert sein. Wie binde ich dann die Skripte in das Dokument ein? Wie übergebe ich Parameter? Wie bekomme ich die Ausgaben wieder in die schon bestehenden Starbasic-Makros?
lg scientific