本記事ではExcelシートの内容を翻訳するアプリを作成します。
PythonのOpenPyXLでExcelを操作、翻訳にはDeepL APIを使用します。
最後に紹介するpyinstallerを使用するとPythonファイルをexe化することができ、python環境のないPCでも動作するものも作れます。
Excel-VBAで作成するよりもシンプルなコードになるのでオススメの方法です。
それでは早速手順を解説していきます。
事前準備
DeepL-APIの登録
はじめにDeepL-APIのDeepL API Free(無料)に登録しAPIコードを取得します。
一ヶ月に50万文字の制限付きですが、無料版で十分かと思います。
ご自身の情報を入力していき、登録を完了させます。
途中クレジットカード番号を要求されますが、無料版であれば請求は来ませんのでご安心ください。
登録が完了したら、自分のAPI認証キーを確認してください。
後のPythonコード内にこのキーを入力することになります。
Pythonライブラリのインストール
まず始めにDeepLのライブラリをインストールします。
これにより、よりシンプルなコードでDeepL翻訳を実行することができます。
pip install deepl
公式サイトにも記載がある通り、記述するコードがかなり省略可能です。
翻訳例(ライブラリなし)
result = requests.get(
"https://api.deepl.com/v2/translate",
params={
"auth_key": auth_key,
"target_lang": target_language,
"text": text,
},
)
translated_text = result.json()["translations"][0]["text"]
翻訳例(ライブラリあり)
import deepl
translator = deepl.Translator(auth_key)
result = translator.translate_text(text, target_lang=target_language)
translated_text = result.text
openpyxlのインストール
こちらはインストールがまだの方は必要です。
やり方はこちらの記事を参考にしてください。
インストール自体はたった一文で完了です。
pip install openpyxl
簡単な翻訳コードの説明
Pythonコード
次のコードは同じ階層にある.xlsxファイルを全て読み込み、sheet1の決められた行数・列数分のセルを全て翻訳しファイル名を”訳後_元のファイル名”とし保存するものです。
import deepl
import openpyxl
import sys
import glob
import os
sys.setrecursionlimit(10000)
API_KEY = '●●●' # 自身の API キー
source_lang = 'JA'
target_lang = 'EN-US'
try:#翻訳後のファイルを格納するフォルダを作成
os.mkdir("アウトプット格納先")
except:
print("アウトプット格納先が既にあります")
sys.exit()
files=glob.glob('*.xlsx')
for file in files:
print(file+"を翻訳中")
wb=openpyxl.load_workbook(file)
df_out = wb.active
ws = wb["sheet1"]#"sheet1を翻訳する"
for i in range(1,100):#必要な行数分
for t in range(1,16):#必要な列数分
try:
text=ws.cell(row=i,column=t).value
# イニシャライズ
translator = deepl.Translator(API_KEY)
# 翻訳を実行
result = translator.translate_text(text, source_lang=source_lang, target_lang=target_lang)
ws.cell(row=i,column=t,value=str(result))
except:
next
wb.save(f'./アウトプット格納先/訳後_'+file)
pyinstallerでexe化する
exe化することで、python環境がないPCでもExcelを翻訳するソフトを起動することができるようになります。
pyinstallerの詳細はこちらを参考にしてください。
proxyの設定について
ネットワーク環境によってはプロキシの設定が必要な場合があります。
その場合は下記のコードを追加することで実行できます。
translatorの部分はproxy=を追加で完了です。
proxies = {
'http': 'http://●●●.●●.●.●:8080',
'https': 'http://●●●.●●.●.●:8080',
}
translator = deepl.Translator(API_KEY,proxy=proxies)
ぜひ試してみてください。