[GO] J'ai créé un outil de bonus par les pairs en interne (agrégation uniquement) en utilisant Python et BigQuery

introduction

Unipos est reconnu comme un outil pour envoyer de la gratitude et des efforts parmi les employés. Étant donné que l'introduction de services à l'échelle de l'entreprise est un lourd fardeau, j'ai décidé de faire quelque chose comme ça pour le moment.

Chose que tu veux faire

Si vous créez un canal dédié avec slack et skip mention + message, il sera compté. Il est agrégé tous les mois et donne une visualisation et une MHP (la plupart, louée, personne). Je souhaite également résumer les messages envoyés pour chaque utilisateur.

Ce que j'ai utilisé

Procédure de création

paramètres de relâchement

Tout d'abord, créez un nouveau BOT avec slack api.

  1. Cliquez sur Créer une nouvelle application
  2. Entrez le nom de l'application et sélectionnez l'espace de travail pour créer l'application.
  3. Cette fois, je veux l'utiliser comme un BOT, alors sélectionnez Bots
  4. Activez Toujours afficher mon bot en ligne
  5. Émettez un jeton avec OAuth et autorisations et utilisez-le lors de l'écriture à partir de slackbot, alors copiez et collez localement
  6. Créez une chaîne de compliments avec Slack et ajoutez-y l'application créée

C'est presque la fin de la préparation du côté mou. Définissez une icône pour l'application si vous le souhaitez.

Google Spread Sheet et paramètres GAS

Considérant qu'il peut être exploité par un non-ingénieur plus tard, cette fois, si vous appuyez sur GET, il sera écrit sur la feuille de calcul.

Enregistre 4 colonnes de remerciement / travailleur, message de la personne et date.

J'ai utilisé cette source.

Parce que j'ai utilisé la suite de l'entreprise Exécutez l'application en tant que: pour moi, Je ne pouvais pas écrire à cause des autorisations sauf si Who a accès à l'application: a été défini sur n'importe qui.

Appuyez sur l'URL créée pour confirmer qu'elle est écrite dans chaque colonne et passez à la suivante.

Paramètres BigQuery et Data Portal

Créez un projet pour lire la feuille de calcul créée précédemment en tant que source de données. J'ai pensé à utiliser la fonction bigquery pour le visualiser, Utilisez le portail de données car l'opération est intuitive.

paramètres de slackbot

J'ai fait le plus de codage cette fois.

import requests
import datetime
import re
from slackbot.bot import listen_to
from slackbot.bot import default_reply

Les requêtes, datetime, proviennent de la bibliothèque par défaut de python, Utilisez listen_to et default_reply de slackbot.

@listen_to('<@')
def mention_func1(message):
    api = "https://script.google.com/macros/s/[api]/exec?p1={p1}&p2={p2}&p3={p3}&p4={p4}"

if message.body['channel'] == '[channel ID]' :

        bodytext = re.split('\s+|\s*\n\s*', message.body['text'], maxsplit=1)
    
        userid = bodytext[0].replace('<@', '').replace('>', '')

        if "Rejoint la chaîne" in userid:
            exit()
        
        p1 = namelist[userid]
        p2 = bodytext[1]
        p3 = namelist[message.body['user']]
        p4 = datetime.date.today()
        
        url = api.format(p1=p1, p2=p2, p3=p3, p4=p4)
        r = requests.get(url)
        
        message.reply('Nous avons reçu des compliments!')

Au début, quand j'ai essayé de le faire réagir avec un pictogramme personnalisé spécifique + @username, J'ai découvert que certains employés ne savaient pas comment utiliser des pictogrammes personnalisés, j'ai donc décidé de travailler si je les mentionnais sur une chaîne spécifique.

Dans le message reçu par slackbot, l'ID de la personne qui l'a fait est l'ID utilisateur de Slack, et la partie mention est `` <@USERID> ''. Puisque je voulais l'enregistrer en tant que nom d'affichage pour l'opération, j'ai créé un objet pour le nom d'affichage et l'ID utilisateur séparément, et j'ai converti l'ID utilisateur en nom d'affichage.

Enfin, écrivez pour atteindre l'URL dans les requêtes et terminer.

Production

スクリーンショット 2020-01-20 18.26.19.png

Écrivez un message avec des mentions dans slack, et quand il est enregistré avec succès, vous recevrez une réponse du bot.

スクリーンショット 2020-01-20 18.23.36.png

Les données enregistrées sont agrégées chaque mois, et vous pouvez vérifier le nombre de fois / messages ont été envoyés / messages sur le portail de données. Je n'ai fait que le nombre de fois et le message une fois, mais comme il est facile de créer pour chaque utilisateur ou d'agréger par différents éléments, j'ai pensé que ce serait bien si le portail de données pouvait être modifié dans les opérations futures. ..

référence

Recommended Posts

J'ai créé un outil de bonus par les pairs en interne (agrégation uniquement) en utilisant Python et BigQuery
J'ai créé Chatbot en utilisant l'API LINE Messaging et Python
J'ai créé Chatbot en utilisant l'API LINE Messaging et Python (2) ~ Server ~
[Python] Python et sécurité-② Outil d'analyse de port réalisé avec Python
J'ai essayé le web scraping en utilisant python et sélénium
J'ai essayé la détection d'objets en utilisant Python et OpenCV
J'ai créé un outil en Python qui clique avec le bouton droit sur un fichier Excel et le divise en fichiers pour chaque feuille.
J'ai effectué un processus de connexion / déconnexion en utilisant Python's Bottle.
J'ai essayé de faire LINE BOT avec Python et Heroku
Python: j'ai essayé menteur et honnête
Création d'un toolver qui crache le système d'exploitation, Python, les modules et les versions d'outils à Markdown
J'ai créé un installateur Ansible
J'ai eu une erreur dans vim ou zsh dans la série Python 3.7
J'ai créé un lecteur de flux rapide en utilisant feedparser en Python
[Je l'ai fait avec Python] Outil pour la sortie par lots de données XML
J'ai créé un guide de programme original en utilisant l'API de guide de programme NHK.