GoogleスプレッドシートでDeepL翻訳関数を作る


Googleスプレッドシートのデフォルトで使えるGOOGLETRANSLATE関数があまりにも精度が悪いので、DeepL関数をGoogle App Scriptで自作しました。

手順

1. DeepL Proアカウント(無料)を作る

DeepLAPIを使うためにDeepLProアカウントを作ります。
https://www.deepl.com/pro#developer

このサイトから「DeepL API Free」を選択して手順に沿って登録します。

※クレジットカードを入力する項目がありますが、Freeプランであれば課金はされません。
※DeepL API Freeだと50万文字/月が上限のようです。(執筆時点)

2. 登録後のAPI認証キーをコピーしておく

登録完了後に認証キーが表示されるのでコピーしておきます。
「XXX~XXXX:fx」というキーです。
マイページ->プランでも見ることができます。

3. Google App Scriptを開く

GoogleスプレッドシートからTool->Script Editorを開きます。

4. DeepL関数を書く

auth_keyのXXXXXは2でコピーした認証キーを入力してください。
今回は英語->日本語の翻訳ですが変えたい場合はja,enの部分を変えて下さい。

deepl.gs
function deepl(text) {
  var response = UrlFetchApp.fetch("https://api-free.deepl.com/v2/translate?auth_key=XXXXX&text="+ text +"&target_lang=ja&source_lang=en");
  var json = response.getContentText(); 
  var data = JSON.parse(json); 
  var result = data.translations[0].text;
  return(result);
}

5.保存して実行

スクリプトエディタで保存した後、Google Sheetでdeepl関数が使えるようになります。
=deepl(翻訳したい日本語または参照セル)という形で使えます。

最後に

Googleスプレッドシートでセンテンス単語帳をを作ってたのですが、GOOGLE TRANSLATE関数があまりにも使えず&プラグインも日本語対応しているものがなく、やっつけで作りました。


追記 (2021.9.3)

Google App Scriptの仕様で、スプレッドシートを読み込むたびに関数が実行されてしまうようです。
今のところ有効な回避策がないようなので、同じファイル内で大量に関数を使用すると月額上限に引っかかりやすくなるので注意してください。