简体   繁体   English

Python Pandas 和 Slack Webhooks Requests.post

[英]Python Pandas and Slack Webhooks Requests.post

What im looking to achieve is pulling a csv file from a workorder app that we use.我希望实现的是从我们使用的工单应用程序中提取 csv 文件。 Then convert it using pandas and remove unnecessary columns.然后使用 pandas 转换它并删除不必要的列。 Then post this info into slack using a webhook.然后使用 webhook 将此信息发布到 slack。 I dont have access to the slack API.我无权访问松弛的 API。 So far this is what i came up with but am finding it hard to get the data into a format that i can send.到目前为止,这是我想出的,但我发现很难将数据转换成我可以发送的格式。

from time import sleep
from requests.models import Response
from selenium import webdriver
import os
import pandas as pd

import json
import requests


def WOPULLER_CSV():
  options = webdriver.ChromeOptions() 
  prefs = {'download.default_directory' : 'C:\\WO_CSV'}
  options.add_experimental_option('prefs', prefs)
  driver = webdriver.Chrome(options=options)
  driver.get('https://portal.ez.na.rme.logistics.a2z.com/work-orders?preset=allCSS&customPreset=allCSS&scheduledStartDate=nextOneWeek&status=RS,S')
  SignInASButton = driver.execute_script("return document.querySelector('ez-rme-app').shadowRoot.querySelector('ez-login-page').shadowRoot.querySelector('ez-login').shadowRoot.querySelector('mwc-button:nth-child(4)').shadowRoot.querySelector('#button')")
  SignInASButton.click()
  sleep(1)
  SingleSignOnButton = driver.execute_script("return document.querySelector('ez-rme-app').shadowRoot.querySelector('ez-login-page').shadowRoot.querySelector('ez-login').shadowRoot.querySelector('#sso-login').shadowRoot.querySelector('#button')")
  SingleSignOnButton.click()
  sleep(8)
  if os.path.exists("C:\\WO_CSV\\WorkOrderExport.csv"):
    os.remove("C:\\WO_CSV\\WorkOrderExport.csv")
  CSVButton = driver.execute_script("return document.querySelector('body > ez-rme-app').shadowRoot.querySelector('#content > main > ez-work-order-list-page').shadowRoot.querySelector('div > mwc-button:nth-child(1)').shadowRoot.querySelector('#button')")
  CSVButton.click()
  sleep(1)

def WEBHOOK():

  #value = pd.read_json('C:\WO_CSV\WorkOrderExport.json')

  value = wo
  web_hook_link = 'WEBHOOK LINK'
  headers = {
    'Content-Type': 'application/json',
          }
  data = json.dumps({"name": value})
  response = requests.post(web_hook_link, headers=headers, data=data)
  print (response)

#WOPULLER_CSV() 

df = pd.read_csv (r'C:\WO_CSV\WorkOrderExport.csv')
df = df.sort_values(by='Scheduled Start Date', ascending=False)
df = df.drop(columns=['Organization', 'Original PM due date', 'PM Compliance Max Date', 'PM Compliance Min Date', 'Scheduled End Date', 'Priority', 'Equipment Criticality', 'Equipment Alias', 'Type', 'Index', 'Equipment Description' ])

if os.path.exists("C:\WO_CSV\WorkOrderExport.json"):
    os.remove("C:\WO_CSV\WorkOrderExport.json")

df.to_json('C:\WO_CSV\WorkOrderExport.json')
wo = pd.read_json (r'C:\WO_CSV\WorkOrderExport.json')

WEBHOOK()
print (wo)

Information that is in the CSV file: CSV After Colum Drop CSV 文件中的信息: CSV 列删除后

What im trying to achieve in slack is similar to if i just copy and pasted from excel xlsx file.如果我只是从 excel xlsx 文件中复制和粘贴,我试图在 slack 中实现的目标是相似的。 There is no MD formatting in slack so this is the best option. slack 中没有 MD 格式,所以这是最好的选择。 Format in slack松弛的格式

OK i found my answer.好的,我找到了答案。 In order to post to slack you need to tabulate the csv file then use the json.dump.为了发布到 slack,您需要将 csv 文件制成表格,然后使用 json.dump。 Referenced these other stack posts:引用了这些其他堆栈帖子:

what-are-some-ways-to-post-python-pandas-dataframes-to-slack python-pandas-dataframes-to-slack 发布的一些方法

pretty-printing-a-pandas-dataframe 漂亮的打印熊猫数据框

def WEBHOOK():
    
      #value = pd.read_json('C:\WO_CSV\WorkOrderExport.json')
    
      value = tab
      web_hook_link = 'https://hooks.slack.com/workflows/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'
      headers = {
        'Content-Type': 'application/json',
              }
      data = json.dumps({"name": value})
      response = requests.post(web_hook_link, headers=headers, data=data)
      print (response)
    
    #WOPULLER_CSV() 
    
    df = pd.read_csv (r'C:\WO_CSV\WorkOrderExport.csv')
    df = df.sort_values(by='Scheduled Start Date', ascending=False)
    df = df.drop(columns=['Organization', 'Original PM due date', 'PM Compliance Max Date', 'PM Compliance Min Date', 'Scheduled End Date', 'Priority', 'Equipment Criticality', 'Equipment Alias', 'Type', 'Index', 'Equipment Description' ])
    
    **tab = (tabulate(df, tablefmt="grid"))**
    
    WEBHOOK()
    print (tab)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM