[PYTHON] Donnez des rendez-vous à d'autres avec l'API de calendrier LINE WORKS

L'API de calendrier est nouvelle dans LINE WORKS v2.7. J'aimerais vraiment l'utiliser lors de l'introduction des changements.

Type d'API de calendrier

Actuellement, il existe deux API de calendrier principales.

API de calendrier précédente (~ v2.6)

Il existe deux principaux types d'API LINE WORKS: les API de serveur et les API de service.

Type d'API Fonctionnalité
API serveur API qui fonctionne avec les privilèges système, aucune connexion utilisateur requise
API de service API qui fonctionne avec l'autorité de chaque utilisateur, la connexion de l'utilisateur est requise dans l'interface utilisateur Web lors de l'utilisation

Jusqu'à présent, l'API de calendrier était fournie uniquement en tant qu'API de service. Par conséquent, il n'était possible de gérer votre propre calendrier qu'avec votre propre autorité.

A partir de maintenant (v2.7 ~) API de calendrier

Parallèlement à la mise à jour v2.7, une nouvelle API serveur a été ajoutée et peut être utilisée pour la copie de données pendant la migration. Cependant, pour le moment, les fonctions fournies sont limitées.

Fonctionnalités fournies par l'API Calendar Server

--Créer / supprimer un calendrier --Créer / modifier / supprimer un rendez-vous

Fonctionnalités clés non fournies par l'API Calendar Server

--Enquête / correction des informations du calendrier --Enquête sur la liste des calendriers

De cette manière, vous pouvez utiliser «créer un nouveau calendrier et le lancer», mais «référencer les informations existantes» continuera à être limité à l'API de service.

Essayez d'utiliser l'API de calendrier

En utilisant la nouvelle API, enregistrons un calendrier et ajoutons un rendez-vous. Ce qui suit utilise Python 3.8.0.

Créer un calendrier

Cliquez ici pour une explication de l'API. Créer un calendrier

calendarlist.py



import json
import requests
import urllib.parse

APIID="ID d'API obtenu à partir de la Developer Console"
SERVER_CKEY = "Clé client du serveur obtenue à partir de la Developer Console"
SERVER_TOKEN = "Jeton d'authentification du serveur"

def CalendarlistS(ServerTOKEN,AccountId,**CalParams):
    #Créer une URL de requête
    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'
    }
    #Passer CalParams comme paramètre de calendrier
    r = requests.post(apiurl, headers = header, json = CalParams)
    return r

#Exemple de création
cal=CalendarlistS(SERVER_TOKEN,'demo@exampletenant',name='demo calendar',description='hogehoge')

#L'ID de calendrier créé entre dans returnValue
Cal_ID = cal.json()['returnValue']

Notez que de nombreuses autres API utilisent la valeur externalKey pour spécifier les membres, mais le accountId de l'API de calendrier est au format ID @ domaine.

Ajouter des rendez-vous au calendrier

Ensuite, enregistrez le rendez-vous dans le calendrier créé.

calendarlist.py


def CalendareventS(ServerTOKEN,AccountId,CalendarId,**EventParams):
    #Créer une URL de requête
    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'
    }
    #Passer EventParams comme information de rendez-vous
    r = requests.post(apiurl, headers = header, json = EventParams)
        return r

Les paramètres de rendez-vous sont spécifiés au format ical. Veuillez consulter ici pour savoir comment écrire.

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:Exemple de calendrier
DESCRIPTION:Explication détaillée
LOCATION:Bureau de Tokyo
ORGANIZER;CN=Yamada Taro:mailto:[email protected]
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;CN=Participants:mailto:[email protected]
CREATED:20191212T015408Z
LAST-MODIFIED:20191212T015408Z
DTSTAMP:20191212T015409Z
END:VEVENT
END:VCALENDAR

Vous devez enregistrer les rendez-vous un par un. Je pense que le fichier ics exporté depuis l'application de calendrier contient plusieurs rendez-vous (VEVENT), mais sachez que si vous essayez de l'importer tel quel, une erreur se produira. C'est ainsi que vous enregistrez vos rendez-vous dans le calendrier que vous avez créé en premier.

python


f=open('demo.ics')
eventdata=f.read()
f.close()
event=CalendareventS(SERVER_TOKEN,'demo@exampletenant',Cal_ID,ical=eventdata)

Il y a un problème car il ne peut pas être enregistré dans le calendrier de base personnel et ce n'est que dans une direction car il n'y a pas de référence, mais il semble qu'il puisse être commodément utilisé pour verser des horaires à partir d'autres systèmes.

Recommended Posts

Donnez des rendez-vous à d'autres avec l'API de calendrier LINE WORKS
J'ai créé une bibliothèque Python pour appeler l'API de LINE WORKS
Obtenez des vacances avec l'API Google Agenda
J'ai essayé de notifier les informations de retard de train avec LINE Notify
La première API à créer avec le framework Python Djnago REST
Un script qui facilite la création de menus riches avec l'API de messagerie LINE
Appelez l'API avec python3.
Je veux connaître la météo avec LINE bot avec Heroku + Python
Créez un alias pour Route53 vers CloudFront avec l'API AWS
[Version septembre 2020] Explique la procédure d'utilisation de l'API Gmail avec Python
Comment envoyer une requête à l'API DMM (FANZA) avec python
Créer une API REST pour faire fonctionner dynamodb avec le Framework Django REST
Accédez à l'API Etherpad-lite avec Python
Comment créer un bot LINE à intelligence artificielle avec l'API de messagerie Flask + LINE
J'ai essayé de créer un LINE BOT "Sakurai-san" avec API Gateway + Lambda
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python
Accéder à l'API Docker Remote avec des requêtes
Envoyer des données à l'API DRF avec Vue.js
J'ai essayé de toucher l'API COTOHA
Alignez la barre de couleurs sur la figure avec matplotlib
Jouez avec Dajare en utilisant l'API COTOHA
La route de la compilation vers Python 3 avec Thrift
[LINE Messaging API] Je souhaite envoyer un message du programme à tout le monde LINE
Créons-le en appliquant Protocol Buffer à l'API avec Serverless Framework.
Créez une application qui fonctionne bien avec les rapports des utilisateurs à l'aide de l'API COTOHA
L'ingénieur du front a essayé de démarrer automatiquement le serveur API de go avec systemd rapidement
Pour envoyer automatiquement des e-mails avec des pièces jointes à l'aide de l'API Gmail en Python
J'ai essayé d'envoyer automatiquement la littérature du nouveau virus corona à LINE avec Python