[PYTHON] Mit der LINE WORKS-Kalender-API können Sie Termine an andere Personen weitergeben

Die Kalender-API ist neu in LINE WORKS v2.7. Ich möchte es tatsächlich verwenden, während ich die Änderungen vorstelle.

Kalender-API-Typ

Derzeit gibt es zwei Hauptkalender-APIs.

Vorherige (~ v2.6) Kalender-API

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.

Von nun an (v2.7 ~) Kalender-API

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.

Von der Calendar Server-API bereitgestellte Funktionen

Hauptfunktionen, die von der Calendar Server-API nicht bereitgestellt werden

Auf diese Weise können Sie "Neuen Kalender erstellen und einwerfen" verwenden. "Vorhandene Informationen referenzieren" ist jedoch weiterhin auf die Service-API beschränkt.

Versuchen Sie es mit der Kalender-API

Registrieren Sie mithilfe der neuen API einen Kalender und fügen Sie einen Termin hinzu. Im Folgenden wird Python 3.8.0 verwendet.

Kalender erstellen

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.

Termine zum Kalender hinzufügen

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

Mit der LINE WORKS-Kalender-API können Sie Termine an andere Personen weitergeben
Ich habe eine Python-Bibliothek erstellt, um die API von LINE WORKS aufzurufen
Holen Sie sich Urlaub mit der Google Kalender-API
Ich habe versucht, die Zugverspätungsinformationen mit LINE Notify zu benachrichtigen
Die erste API, die mit dem Python Djnago REST-Framework erstellt wurde
Ein Skript, mit dem Sie mit der LINE Messaging-API auf einfache Weise umfangreiche Menüs erstellen können
Rufen Sie die API mit python3 auf.
Ich möchte das Wetter mit LINE bot feat.Heroku + Python wissen
Erstellen Sie mit der AWS-API einen Alias für Route53 zu CloudFront
[Version September 2020] Erläutert das Verfahren zur Verwendung der Google Mail-API mit Python
So senden Sie eine Anfrage mit Python an die DMM (FANZA) -API
Erstellen Sie eine REST-API, um dynamodb mit dem Django REST Framework zu betreiben
Klicken Sie mit Python auf die Etherpad-Lite-API
So erstellen Sie einen LINE-Bot mit künstlicher Intelligenz mit der Flask + LINE Messaging-API
Ich habe versucht, "Sakurai-san" LINE BOT mit API Gateway + Lambda zu erstellen
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
Greifen Sie mit Requests auf die Docker Remote API zu
Senden Sie Daten mit Vue.js an die DRF-API
Ich habe versucht, die COTOHA-API zu berühren
Richten Sie die Farbleiste mit matplotlib an der Figur aus
Spielen Sie mit Dajare mithilfe der COTOHA-API
Der Weg zum Kompilieren zu Python 3 mit Thrift
[LINE Messaging API] Ich möchte eine Nachricht vom Programm an alle LINE senden
Erstellen wir es, indem wir den Protokollpuffer mit Serverless Framework auf die API anwenden.
Erstellen Sie mithilfe der COTOHA-API eine App, die gut mit Berichten von Personen funktioniert
Der Frontingenieur versuchte, den API-Server von go mit systemd schnell automatisch zu starten
So senden Sie automatisch E-Mails mit Anhängen mithilfe der Google Mail-API in Python
Ich habe versucht, die Literatur des neuen Corona-Virus mit Python automatisch an LINE zu senden