Pythonで業務効率化 ダウンロードファイルのリネームと所定フォルダへの移動を自動化

Python Selenium

経理業務では、請求書や領収書、取引データのファイルを日々ダウンロードし、フォルダごとに整理する作業が発生します。これらを手作業で行うと、時間がかかるだけでなく、ヒューマンエラーのリスクも高まります。
Pythonを活用すれば、ウェブページからのファイルダウンロード、ダウンロードしたファイルのリネーム、および所定のフォルダへの移動を全て自動化させることが可能です。本記事では、経理業務の効率化を目的に、Pythonを使ったファイル管理の自動化手法を詳しく解説します。

ダウンロードファイルの経理業務における課題

経理業務では、取引データのCSVファイル、請求書のPDF、領収書のスキャンデータなど、さまざまなファイルを日々ダウンロードします。この一連の作業には以下のような課題があります。

  • ダウンロードするためには、ウェブサイトに都度、ログインし、ページに移動しなければならない
  • ダウンロードしたファイルを適切な名前に変更する必要がある
  • ダウンロードフォルダから、そのファイルを格納しているフォルダに移動させる必要がある
  • 格納フォルダが複数あるとき、各フォルダに手動で振り分ける必要がある

これらの課題を解決するためには、自動化の仕組みを取り入れることが効果的です。

ウェブサイトからのファイルダウンロード、ファイルリネーム、フォルダ移動をPythonで自動化するメリット

Pythonを活用してファイル管理を自動化することで、以下のようなメリットが得られます。

  • 時間の節約:手動でのファイル整理を不要にし、作業時間を削減
  • ミスの削減:ファイル名の統一と適切なフォルダ整理により、管理ミスを防止
  • 業務の標準化:同じルールでファイルを整理するため、誰が作業しても一定の品質を維持できる

以下、各作業における自動化の方法について説明します。

ウェブサイトからのファイルダウンロードを自動化する方法

ウェブサイトからのファイルダウンロードは、主に次に手順で行います。

1、ウェブサイトにアクセス
2、ID、パスワードを入力し、ログイン
3、所定のウェブページに移動
4、必要なファイルを特定しダウンロード

これらの手順は、PythonのSeleniumで全て自動化でき、WEBスクレイピングといった手法になります。
Selemiumを使った、WEBスクレイピングの方法と具体例、およびウェブページへのログインを自動化する方法については、こちらの記事で詳しく説明していますので、こちらをご覧ください。

経理業務でPythonのWEBスクレイピングを活用する方法と具体例

Python Selenium ウェヴページへのログイン、スクリーンショットを自動化する方法と実例

次からは、ダウンロードしたファイルのリネーム、所定のフォルダへの移動といったファイル管理の自動化の方法について説明します。

Pythonを使ったファイル管理の基本操作

Pythonでファイルをリネームし、フォルダに移動するためには、以下のモジュールを活用します。

  • os:ファイルやフォルダの操作
  • shutil:ファイルの移動やコピー
  • glob:特定のファイルを検索

以下のコードで、ダウンロードフォルダ内の特定のファイルを自動でリネームし、指定フォルダへ移動できます。

import os
import shutil
import glob

# ダウンロードフォルダのパス
downloadsdir_path = "C:/Users/Username/Downloads"
# 移動先フォルダ
movebase_dir = "C:/Users/Username/Documents/経理ファイル"

# ファイルの検索
files = glob.glob(os.path.join(downloadsdir_path, "*.pdf"))  # PDFファイルのみ対象

for file_path in files:
    filename = os.path.basename(file_path)
    new_filename = "invoice_" + filename  # 例: "invoice_12345.pdf" にリネーム
    new_path = os.path.join(movebase_dir, new_filename)
    
    shutil.move(file_path, new_path)
    print(f"Moved: {file_path} → {new_path}")

このスクリプトを実行すると、ダウンロードフォルダ内のPDFファイルがリネームされ、指定の経理用フォルダに自動的に移動します。

Seleniumによりダウンロードしたファイルを一つずつリネームし所定のフォルダに移動させる方法

Seleniumによりファイルダウンロードを自動化させた場合、ダウンロードするファイルは一つではなく、複数のファイルをダウンロードするケースがほとんどだと思います。
一つのファイルまたは複数ファイルを一括でリネームし移動させるには上記方法でOKですが、実務上その様なケースはほとんどなく、一つずつリネームし所定のフォルダに移動させる必要があります。
以下のコードで、ダウンロードしたファイルを一つずつリネームし、指定フォルダへ移動させることができます。

#ダウンロードフォルダのパス
downloadsdir_path = "C:/Users/Username/Downloads"

# 移動先フォルダ
movebase_dir = "C:/Users/Username/Documents/経理ファイル"
#実績一覧ファイルダウンロード
btn = driver.find_element(By.XPATH,'×××')     
btn.click()
sleep(5)
    
#リネームするファイル名を指定
data = "0470_〇〇店_実績一覧.csv"  

#フォルダ移動
files = os.listdir(downloadsdir_path)
path_dir = os.path.join(downloadsdir_path,*files)   
move_dir = os.path.join(movebase_dir,data)
shutil.move(path_dir,move_dir)

「files = os.listdir(downloadsdir_path)」:ダウンロードフォルダにダウンロードされたファイル名を取得します。
「path_dir = os.path.join(downloadsdir_path,*files)」:そのファイルのファイルパスを取得することができます。
「move_dir = os.path.join(movebase_dir,data)」:移動先のファイルパスを指定します。
「shutil.move(path_dir,move_dir)」:ダウンロードフォルダから移動先フォルダにファイルを移動させます。

Seleniumを使ったファイルダウンロード、ダウンロードファイルのリネームと所定フォルダへの移動自動化のコード例

以下、一連の作業を自動化させたコード例をお伝えします。
是非、ご参考にしてください。

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select  # Selectをインポート
from selenium.webdriver.common.action_chains import ActionChains
from time import sleep
import os
import shutil
import pyautogui
from PIL import Image 

# 保存フォルダを指定 
movebase_dir = "C:/Users/Username/Downloads"

#ダウンロードフォルダパス指定
downloadsdir_path = "C:/Users/Username/Documents/経理ファイル"  

# Chromeオプションを設定
options = webdriver.ChromeOptions()
options.add_experimental_option('detach', True)  # ブラウザが閉じないように設定

# ChromeDriverのサービスを設定
cService = Service(executable_path='.\chromedriver.exe')  # クロームドライバーが保存されているフォルダを指定
driver = webdriver.Chrome(service=cService, options=options)
actionChains = ActionChains(driver)

# 暗黙的な待機時間を設定
driver.implicitly_wait(10)

# ログインページを開く
url_login = 'https://www.×××'  # URLを指定

driver.get(url_login)

try:
    # D入力
    text_box = driver.find_element(By.XPATH, '×××')
    text_box.send_keys('×××')
    sleep(5)         
        
    # パスワード入力
    text_box = driver.find_element(By.XPATH, '×××')
    text_box.send_keys('×××')    

    # ログインボタンをクリック
    btn = driver.find_element(By.XPATH,'×××')     
    btn.click()
    sleep(10)
          
    # 施設選択
    btn = driver.find_element(By.XPATH,'×××')     
    btn.click()
    sleep(10)   
        
    # 月選択
    driver.switch_to.default_content()      
    btn = driver.find_element(By.XPATH,'×××')     
    btn.click()
    btn = driver.find_element(By.XPATH,'×××')         
    btn.click()
    
    #表示する       
        
    elem = driver.find_element(By.XPATH,'×××')
   btn.click()    
    sleep(5)

  #実績一覧ダウンロード
    btn = driver.find_element(By.XPATH,'×××')     
    btn.click()
    sleep(5)

  #リネームするファイル名を指定
  data = "0470_〇〇店_実績一覧.csv"  

  #フォルダ移動
  files = os.listdir(downloadsdir_path)
  path_dir = os.path.join(downloadsdir_path,*files)   
  move_dir = os.path.join(movebase_dir,data)
  shutil.move(path_dir,move_dir)
               
    #ブラウザを閉じる
    driver.quit()    

except Exception as e:
    print(f"エラーが発生しました: {e}")

# スクリプト終了を防ぐ
input("終了するには Enter キーを押してください...")

おわりに

経理業務のファイル管理をPythonで自動化することで、業務の効率化を大幅に向上させることができます。手動作業の負担を減らし、より正確で迅速な処理を実現するために、Pythonスクリプトを活用してみてはいかがでしょうか?
今回紹介したコードをベースに、自社の業務に合わせたカスタマイズを行えば、さらに効果的な自動化が可能です。ぜひ実践して、業務改善につなげてください!

コメント

タイトルとURLをコピーしました