목차
이전 포스팅 - 2023.04.18 - [파이썬/파이썬 활용] - 파이썬 슬랙 봇 만들기(3-4): 파일 전송하기 > 견적서 생성 모달 창 만들기
이번 포스팅에선 견적서 생성하기를 눌렀을 때, 아래와 같이 견적서 파일이 발송되는 코드를 리뷰해보겠습니다.
이 파일 자체는 실제로.. 현업에서 사용하는 거라서 열어서 보기는 어렵고 그냥 어떻게 돌아간다는 원리 설명 정도만 해보겠습니다.
[코드 리뷰]
@app.view("view_4")
def handle_submission(ack, body, client, view, logger, payload):
ack()
print(body)
request_route = body["view"]["state"]["values"]["making_estimate1"][
"input_request_route"
]["selected_option"]["value"]
company_name = body["view"]["state"]["values"]["making_estimate2"][
"input_company_name"
]["value"]
company_email = body["view"]["state"]["values"]["making_estimate3"][
"input_company_email"
]["value"]
week_period = body["view"]["state"]["values"]["making_estimate4"][
"input_week_period"
]["selected_option"]["value"]
times_per_week = body["view"]["state"]["values"]["making_estimate5"][
"input_times_per_week"
]["selected_option"]["value"]
times_per_service = body["view"]["state"]["values"]["making_estimate6"][
"input_times_per_service"
import sys
import io
import os
sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding="utf-8")
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding="utf-8")
sys.path.append(os.path.dirname(os.path.abspath(os.path.dirname(__file__))))
from function_packages.slack_connection import sending_file
from office.functions import estimate_price_calculator
import openpyxl as ex
from datetime import datetime as dt, timedelta as td
# 견적서에 기입할 날짜 작성(오늘 날짜, 견적 유효기간)
today = dt.now().date().strftime("%Y.%m.%d")
month_later = dt.now().date() + td(days=30)
month_later = month_later.strftime("%Y.%m.%d")
valid_date_noti = f"견적 유효기한: {month_later}(금일 기준 +30일)"
estimate_dict = estimate_price_calculator(
week_period, times_per_week, times_per_service
)
wb = ex.load_workbook(
"견적서 파일 경로"
)
sheet = wb["견적서"]
sheet["h7"] = today
sheet["b10"] = valid_date_noti
sheet["c17"] = f"({week_period} {times_per_week}/ 1회당 {times_per_service})"
sheet["g12"] = company_name
sheet["g13"] = company_email
sheet["h17"] = estimate_dict["total_time_per_month"]
sheet["i17"] = estimate_dict["user_hourly_price"]
sheet["k17"] = estimate_dict["total_price_per_month"]
sheet["k18"] = estimate_dict["total_price_per_month"]
sheet["k19"] = estimate_dict["total_tax_per_month"]
sheet["k20"] = estimate_dict["taxed_total_price_per_month"]
estimate_file_name = f"견적서 파일 경로/견적서({company_name}).xlsx"
wb.save(estimate_file_name)
import slack_sdk
Token = "두번째 봇 토큰"
client = slack_sdk.WebClient(token=Token)
client.files_upload_v2(
channel="보낼 채널 아이디", initial_comment="견적서 발송 테스트입니다.", estimate_file_name
)
전편에서 견적서 생성하기를 누르면 view4 값이 전달되면서 위의 함수가 실행됩니다.
request_route, company_name, company_email, week_period, times_per_week, times_per_service에는 입력해줬던 값을 추출해서 담습니다.
이제 엑셀 파일을 수정하고 슬랙으로 업로드를 해줘야 하는데요.
여기서는 엑셀을 편집할 수 있는 openpyxl을 사용해줬습니다.
이 함수에 대한 설명은 나중에 따로 해보겠습니다.
간단히 소개만 하자면 파이썬으로 엑셀을 자동화 할 때, 주로 사용하는 라이브러리라고 보시면 됩니다.
그리고 estimate_price_calculator는 별도로 가격을 계산하는 함수입니다.
다 계산을 하면 ex.load_workbook('파일 경로')를 통해 엑셀 파일을 열어줍니다.
그리고 sheet['h7'] = today처럼 각각의 셀에 값을 입력해줍니다.
만약에, sheet['h7'] = 3*10 이런 식으로 쓰면 곱한 값이 올라가고 =수식을 적어주면 수식이 적혀서 올라갑니다.
다 편집을 하고 나면 기존의 엑셀 파일은 템플릿으로 남겨둬야 하니까 새로운 이름(estimate_file_name)을 가진 견적서 엑셀 파일로 저장(wb.save)을 해줍니다.
그리고 slack_sdk 라이브러리를 설치하고 두번째 봇을 연동해서 files_upload_v2를 통해 새로 저장한 파일을 슬랙으로 업로드합니다.
이렇게 하고 조금 기다려주면 슬랙에서 엑셀 파일을 확인해볼 수 있습니다.
여기까지 자동으로 슬랙 봇을 통해서 엑셀 견적서 파일을 업로드 하는 방법을 알아봤습니다.
이렇게 자동화를 해두면 얘기하거나 상담하면서도 바로 파일을 만들어서 보내줄 수도 있고
더 좋은 건.. 여기에다가 시트도 연동해두면 시트에서는 누구에게 어떤 기준으로 정보를 보냈는지를 기록으로 남겨둘 수 있어서 지표를 보는데도 엄청난 도움이 됩니다.
참고 - 2023.04.12 - [파이썬/파이썬 활용] - 파이썬을 이용한 구글 스프레드시트 연동 및 자동화 방법
'실무 > 슬랙 봇 만들기' 카테고리의 다른 글
파이썬 슬랙 봇 만들기(3-4): 파일 전송하기 > 견적서 생성 모달 창 만들기 (0) | 2023.04.18 |
---|---|
파이썬 슬랙 봇 만들기(3-3): 파일 전송하기 > 모달 드롭다운 만들기 (0) | 2023.04.18 |
파이썬 슬랙 봇 만들기(3-2): 파일 전송하기 > 드롭다운 메뉴 만들기 (0) | 2023.04.18 |
파이썬 슬랙 봇 만들기(3-1): 파일 전송하기 (0) | 2023.04.16 |
파이썬 슬랙 봇 만들기(2): hello라고 적으면 반응하는 봇 호출하기 (0) | 2023.04.16 |
댓글