#自動化したい
当方、経理職として戦っているのですが、毎日のドルレートを活用して海外送金取引等の仕訳に利用しているわけなのですが(´・ω・`)毎日毎日、みずほ銀行からヒストリカルデータのCSVをダウンロードしてエクセルに張り付けているのであります。そこでこんなルーチンワークこそ自動化の出番だということで作ったのが今回のコーディングです。
#以下コード
qiita.rb
from selenium import webdriver
import time
import pathlib
import csv
import datetime
import openpyxl
def download_csv(save_dir):
profile=webdriver.FirefoxProfile()
profile.set_preference("browser.donwload.folderlist",2)
profile.set_preference("browser.download.manager.sjpwmwjemStarting",False)
profile.set_preference("browser.download.dir", save_dir)
profile.set_preference("browser.helperApps.neverASK.savedTodisk","text/csv")
driver=webdriver.Firefox(firefox_profile=profile)
driver.get("https://www.mizuhobank.co.jp/market/historical.html")
time.sleep(1)
driver.find_element_by_css_selector("#mainCol > article > div > div.section > div.inner > table > tbody > tr:nth-child(2) > th > span > a").click()
def open_csv_to_excel():
path=pathlib.Path(r"C:\Users\name\Downloads")
for pass_obj in path.iterdir():
if pass_obj.match("quote.csv"):
with open(pass_obj)as x:
reader=csv.reader(x)
for row in reader:
if row[0]==today:
print(row[1])
wb=openpyxl.load_workbook(r"C:\Users\name\Documents\excel_python\data\レート表.xlsx")
sh=wb.active
for dt_row in range(2,sh.max_row+1): #(2行から最終行まで繰り返し 変数dt_row)
for dt_column in range(2,sh.max_column+1): #(2列から最終列まで繰り返し 変数dt_column)
if sh.cell(dt_row,dt_column).value != None: #datetime.datetime形式を文字列(str型)に変換
date=sh.cell(dt_row,dt_column).value
date_sec="{}/{}/{}".format(date.year,date.month,date.day)
if date_sec==today:
sh.cell(dt_row,dt_column+1).value=row[1]
wb.save(r"C:\Users\name\Documents\excel_python\data\レート表.xlsx")
now=datetime.datetime.today()
today="{}/{}/{}".format(now.year,now.month,now.day)
download_csv(r"C:\Users\name\Downloads\為替レート表")
time.sleep(8)
open_csv_to_excel()
内容としてはseleniumを活用してみずほ銀行のヒストリカルデータをダウンロード、その間8秒間はスリープをかけて保存しきるのを待ってから、続いてエクセルに集計するという段取りです。最新の日付を見やすいように所定の文字列型に直すのに一工夫いりました。
#職場で試してみて
まぁ、環境構築に時間が結構取られてしまいました。firefoxの準備とブラウザ操作のドライバですね。これを別のPCに入れ込むというのを考えると改めてエクセルのVBAの環境構築不要な面は魅力的だなと感じる次第です。あと、職場のPCは性能が悪いので処理に30秒くらいかかりますね。(;´Д`)何でわざわざダウンロードしてエクセルに集計するかというと帳票(エビデンス)として残すためであります。つまりのこの操作で帳票づくりもやってしまおうという魂胆です。