[GO] Ich habe mit Python und BigQuery ein internes Peer-Bonus-Tool (nur Aggregation) erstellt

Einführung

Unipos ist bekannt als Instrument, um den Mitarbeitern Dankbarkeit und Einsatz zukommen zu lassen. Da die Einführung von Dienstleistungen im Unternehmensmaßstab eine schwere Belastung darstellt, habe ich mich vorerst entschlossen, so etwas zu machen.

Was du machen willst

Wenn Sie dort einen dedizierten Kanal mit Slack erstellen und Erwähnung + Nachricht überspringen, wird dieser gezählt. Es wird monatlich aggregiert und gibt Visualisierung & MHP (am meisten, gelobt, Person). Ich möchte auch die gesendeten Nachrichten für jeden Benutzer zusammenfassen.

Was ich benutzt habe

Erstellungsverfahren

lockere Einstellungen

Erstellen Sie zunächst einen neuen BOT mit slack api.

  1. Klicken Sie auf Neue App erstellen
  2. Geben Sie den App-Namen ein und wählen Sie Arbeitsbereich zum Erstellen der App
  3. Dieses Mal möchte ich es als BOT verwenden, also wählen Sie Bots
  4. Aktivieren Sie Immer meinen Bot als online anzeigen
  5. Stellen Sie Token mit OAuth & Permissions aus und verwenden Sie es beim Schreiben von slackbot. Kopieren Sie es also und fügen Sie es lokal ein
  6. Erstellen Sie einen Komplimentkanal mit Slack und fügen Sie die erstellte App hinzu

Dies ist fast das Ende der Vorbereitung auf der lockeren Seite. Legen Sie ein Symbol für die App fest, wenn Sie möchten.

Google Spread Sheet- und GAS-Einstellungen

In Anbetracht dessen, dass es später möglicherweise von einem Nicht-Ingenieur bedient wird, wird es dieses Mal, wenn Sie GET drücken, in die Tabelle geschrieben.

Speichert 4 Spalten mit Dankeschön / Mitarbeiter, Nachricht von Person und Datum.

Ich habe diese Quelle benutzt.

Weil ich die Firmensuite benutzt habe Führen Sie die App aus als: für mich, Ich konnte aufgrund von Berechtigungen nicht schreiben, es sei denn, wer Zugriff auf die App hat: wurde auf irgendjemanden eingestellt.

Klicken Sie auf die erstellte URL, um zu bestätigen, dass sie in jede Spalte geschrieben ist, und fahren Sie mit der nächsten fort.

Bigquery- und Datenportal-Einstellungen

Erstellen Sie ein Projekt, um die zuvor als Datenquelle erstellte Tabelle zu lesen. Ich dachte darüber nach, die Bigquery-Funktion zu verwenden, um sie zu visualisieren. Verwenden Sie das Datenportal, da die Bedienung intuitiv ist.

Slackbot-Einstellungen

Diesmal habe ich am meisten programmiert.

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

Anfragen, datetime, re aus der Standardbibliothek von Python, Verwenden Sie listen_to und default_reply von 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 "Ist dem Kanal beigetreten" 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('Wir haben Komplimente erhalten!')

Zuerst, als ich versuchte, es mit einem bestimmten benutzerdefinierten Piktogramm + @Benutzernamen reagieren zu lassen, Ich fand heraus, dass einige Mitarbeiter nicht wussten, wie man benutzerdefinierte Piktogramme verwendet, und entschied mich, zu arbeiten, wenn ich sie auf einem bestimmten Kanal erwähnte.

In der von slackbot empfangenen Nachricht ist die ID der Person, die sie ausgeführt hat, die Benutzer-ID von Slack, und der erwähnte Teil lautet `<@USERID>`. Da ich es als Anzeigenamen für den Betrieb speichern wollte, habe ich ein Objekt für den Anzeigenamen und die Benutzer-ID separat erstellt und die Benutzer-ID in den Anzeigenamen konvertiert.

Zum Schluss schreiben Sie, um die URL in Anfragen zu treffen und zu beenden.

Ausgabe

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

Schreiben Sie eine Nachricht mit Erwähnungen in Slack, und wenn sie erfolgreich gespeichert wurde, erhalten Sie eine Antwort vom Bot.

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

Die gespeicherten Daten werden jeden Monat aggregiert und Sie können überprüfen, wie oft / Nachrichten / Nachrichten im Datenportal ausgeführt wurden. Ich habe nur die Anzahl und die Nachricht einmal erstellt, aber da es einfach ist, sie für jeden Benutzer zu erstellen oder nach verschiedenen Elementen zu aggregieren, dachte ich, dass es schön wäre, wenn das Datenportal in zukünftigen Vorgängen geändert werden könnte. ..

Referenz

Recommended Posts

Ich habe mit Python und BigQuery ein internes Peer-Bonus-Tool (nur Aggregation) erstellt
Ich habe Chatbot mit LINE Messaging API und Python erstellt
Ich habe Chatbot mit der LINE Messaging API und Python (2) ~ Server ~ erstellt
[Python] Python und Sicherheit - Port-Scan-Tool mit Python
Ich habe versucht, Web-Scraping mit Python und Selen
Ich habe versucht, Objekte mit Python und OpenCV zu erkennen
Ich habe in Python ein Tool erstellt, das mit der rechten Maustaste auf eine Excel-Datei klickt und diese für jedes Blatt in Dateien unterteilt.
Ich habe einen Anmelde- / Abmeldevorgang mit Python's Bottle durchgeführt.
Ich habe versucht, LINE BOT mit Python und Heroku zu machen
Python: Ich habe es mit Lügner und Ehrlichkeit versucht
Erstellt einen Toolsver, der Betriebssystem, Python, Module und Toolversionen an Markdown ausspuckt
Ich habe einen Ansible-Installer gemacht
Ich habe einen Fehler in vim oder zsh in der Python 3.7-Serie
Ich habe einen schnellen Feed-Reader mit Feedparser in Python erstellt
[Ich habe es mit Python gemacht] Tool für die Stapelausgabe von XML-Daten
Ich habe einen Original-Programmführer mit der NHK-Programmführer-API erstellt.