Die Kalender-API ist neu in LINE WORKS v2.7. Ich möchte es tatsächlich verwenden, während ich die Änderungen vorstelle.
Derzeit gibt es zwei Hauptkalender-APIs.
Es gibt zwei Haupttypen von LINE WORKS-APIs: Server-APIs und Service-APIs.
API-Typ | Charakteristisch |
---|---|
Server-API | API, die mit Systemberechtigungen arbeitet, keine Benutzeranmeldung erforderlich |
Service-API | API, die mit der Autorität jedes Benutzers zusammenarbeitet. Bei Verwendung ist eine Benutzeranmeldung in der Web-Benutzeroberfläche erforderlich |
Bisher wurde die Kalender-API nur als Service-API bereitgestellt. Daher war es nur möglich, Ihren eigenen Kalender mit Ihrer eigenen Autorität zu betreiben.
Zusammen mit dem v2.7-Update wurde eine neue Server-API hinzugefügt, die zum Kopieren von Daten während der Migration verwendet werden kann. Zu diesem Zeitpunkt sind die bereitgestellten Funktionen jedoch begrenzt.
Auf diese Weise können Sie "Neuen Kalender erstellen und einwerfen" verwenden. "Vorhandene Informationen referenzieren" ist jedoch weiterhin auf die Service-API beschränkt.
Registrieren Sie mithilfe der neuen API einen Kalender und fügen Sie einen Termin hinzu. Im Folgenden wird Python 3.8.0 verwendet.
Klicken Sie hier, um eine Erklärung der API zu erhalten. Kalender erstellen
calendarlist.py
import json
import requests
import urllib.parse
APIID="API-ID von der Entwicklerkonsole erhalten"
SERVER_CKEY = "Server-Consumer-Schlüssel, der von der Entwicklerkonsole bezogen wird"
SERVER_TOKEN = "Serverauthentifizierungstoken"
def CalendarlistS(ServerTOKEN,AccountId,**CalParams):
#Anforderungs-URL erstellen
apiurl = 'https://apis.worksmobile.com/r/'+ APIID + 'calendarList/'+ urllib.parse.quote(AccountId) + '/calendarList'
header = {
'consumerKey': SERVER_CKEY,
'Authorization': 'Bearer ' + SERVER_TOKEN,
'Content-Type': 'application/json'
}
#Übergeben Sie CalParams als Kalendereinstellung
r = requests.post(apiurl, headers = header, json = CalParams)
return r
#Erstellungsbeispiel
cal=CalendarlistS(SERVER_TOKEN,'demo@exampletenant',name='demo calendar',description='hogehoge')
#Die erstellte Kalender-ID wird in returnValue gespeichert
Cal_ID = cal.json()['returnValue']
Beachten Sie, dass viele andere APIs den Wert externalKey verwenden, um Mitglieder anzugeben, die accountId der Kalender-API jedoch im ID @ domain-Format vorliegt.
Registrieren Sie anschließend den Termin im erstellten Kalender.
calendarlist.py
def CalendareventS(ServerTOKEN,AccountId,CalendarId,**EventParams):
#Anforderungs-URL erstellen
apiurl = 'https://apis.worksmobile.com/r/'+ APIID + '/calendar/v1/' + urllib.parse.quote(AccountId) + '/calendars/'+CalendarId+'/events'
header = {
'consumerKey': SERVER_CKEY,
'Authorization': 'Bearer ' + ServerTOKEN,
'Content-Type': 'application/json'
}
#Übergeben Sie EventParams als Termininformationen
r = requests.post(apiurl, headers = header, json = EventParams)
return r
Terminparameter werden im Format angegeben. Informationen zum Schreiben finden Sie unter hier.
demo.ics
BEGIN:VCALENDAR
VERSION:2.0
PRODID:NO Calendar
CALSCALE:GREGORIAN
BEGIN:VTIMEZONE
TZID:Asia/Tokyo
BEGIN:STANDARD
DTSTART:19700101T000000
TZNAME:GMT+09:00
TZOFFSETFROM:+0900
TZOFFSETTO:+0900
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
SEQUENCE:0
CLASS:PUBLIC
TRANSP:OPAQUE
UID:demodemodemo-001-001
DTSTART;TZID=Asia/Tokyo:20191212T150000
DTEND;TZID=Asia/Tokyo:20191212T160000
SUMMARY:Beispielplan
DESCRIPTION:Ausführliche Erklärung
LOCATION:Büro in Tokio
ORGANIZER;CN=Yamada Taro:mailto:[email protected]
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;CN=Teilnehmer:mailto:[email protected]
CREATED:20191212T015408Z
LAST-MODIFIED:20191212T015408Z
DTSTAMP:20191212T015409Z
END:VEVENT
END:VCALENDAR
Sie müssen die Termine einzeln registrieren. Ich denke, dass die aus der Kalender-App exportierte ics-Datei mehrere Termine enthält (VEVENT), aber bitte beachten Sie, dass ein Fehler auftritt, wenn Sie versuchen, sie so zu importieren, wie sie ist. So registrieren Sie Ihre Termine in dem Kalender, den Sie zuerst erstellt haben.
python
f=open('demo.ics')
eventdata=f.read()
f.close()
event=CalendareventS(SERVER_TOKEN,'demo@exampletenant',Cal_ID,ical=eventdata)
Es gibt ein Problem, dass es nicht im persönlichen Basiskalender registriert werden kann und es keine Referenz gibt, so dass es nur in eine Richtung geht, aber es scheint, dass es bequem zum Gießen von Zeitplänen aus anderen Systemen verwendet werden kann.
Recommended Posts