GASでDeepL翻訳APIにリクエストして英語→日本語に和訳する方法

2022年1月27日

ディープラーニングのAI翻訳サービスであるDeepL翻訳にはAPIが用意されていて、プログラムから翻訳が可能です。

Google Apps Script(GAS)を使って、DeepLのAPIにリクエストして英語の文章の日本語訳を取得する方法を解説します。

最強の翻訳サービスDeepL

DeepLは世界一の多言語翻訳サービスです。

ディープラーニングによるAIによって、これまでの翻訳サービスとは段違いの自然な翻訳を実現してくれます。

かつては翻訳サービスと言えば「Google翻訳」でしたが、英語→日本語の和訳のレベルは圧倒的にDeepLが高いです。

学校教育では習って来なかった英語構文が含まれていても、DeepLを使えば読みやすい日本語に翻訳されるので、手放せません。

DeepL翻訳はAPIでも利用可能

DeepL翻訳サービスはWebサービスとして、フォームに入力したテキストを翻訳する利用が基本です。

しかし、DeepLにはその他にAPIを使って利用することができます。

APIがあれば、プログラミングで翻訳の機能を組み込みたいときにDeepLにAPIでリクエストを送って、翻訳された文章を受け取ることができます。

DeepL翻訳の無料APIの登録・発行

DeepL翻訳のAPIを利用するためのアカウント登録と、APIキー発行手順は以下の記事で詳しく解説しています。

本人認証にはクレジットカードが必要ではありますが、特に支払いはなく無料で利用できます。

無料でも月間50万文字まで利用できるので、個人開発では十分な利用枠です。

GASでDeepLのAPIをリクエストするサンプルコード

DeepLのAPIキーを用意できたところで、Google Apps Script(GAS)でDeepLのAPIをリクエストするサンプルコードを紹介します。

function transDeepL() {
  //DeepLで翻訳したいテキストを設定
  let text = 'This is translation test.';
  //DeepLのAPIにリクエストするURLを設定
  let apiUrl = 'https://api-free.deepl.com/v2/translate?auth_key=';
  //DeepLのAPIキーを設定 ※各自のAPIキーで書き換え
  let apiKey = '69972330-6d4b-1068-36ea-487cd2dcd316:fx';
  //何の言語に翻訳するかで、日本語(ja)を設定
  let lang = 'JA';
  //APIリクエストのPOST時に必要なパラメータを設定
  apiUrl = apiUrl + apiKey + '&text=' + text + '&target_lang=' + lang;
  //DeepLのAPIに翻訳をリクエスト
  let response =  UrlFetchApp.fetch(apiUrl).getContentText();
  console.log(response);
}

3行目でDeepLで翻訳したいテキストを用意し、7行目に発行したAPIキーを設定します。

今回は日本語に翻訳するので「JA」を指定し、UrlFetchApp.fetchでAPIにリクエストします。

最後にDeepLのAPIリクエストから返却されたレスポンスをログ出力します。

返却されたデータはJSON形式でデータが格納されています。

DeepLのAPIで翻訳できる文章は1文以外に、複数の文でも翻訳した結果を得ることができます。

2つの英語文がDeepLによって自然な日本語に和訳されています。

DeepLのAPIレスポンスをパース

先程紹介した通り、DeepLのAPIレスポンスはJSON形式になっています。

そのままではデータを処理できないため、Google Apps Script(GAS)でJSON.parse()でオブジェクトに変換します。

function transDeepL() {
  //DeepLで翻訳したいテキストを設定
  let text = 'This is translation test.';
  //DeepLのAPIにリクエストするURLを設定
  let apiUrl = 'https://api-free.deepl.com/v2/translate?auth_key=';
  //DeepLのAPIキーを設定 ※各自のAPIキーで書き換え
  let apiKey = '69972330-6d4b-1068-36ea-487cd2dcd316:fx';
  //何の言語に翻訳するかで、日本語(ja)を設定
  let lang = 'JA';
  //APIリクエストのPOST時に必要なパラメータを設定
  apiUrl = apiUrl + apiKey + '&text=' + text + '&target_lang=' + lang;
  //DeepLのAPIに翻訳をリクエスト
  let response =  UrlFetchApp.fetch(apiUrl).getContentText();
  let json =JSON.parse(response);
  //ログ出力にDeepLから返却された情報を出力
  console.log(json['translations'][0]['text']);
}

DeepLからのレスポンスを受け取った変数をJSON.parseの引数に設定することで、オブジェクト化します。

これによって、DeepLから翻訳されたテキストのみ抽出可能です。

GASの実行ログを見ると、DeepLで翻訳されたテキストのみが出力されています。

日本語→英語に翻訳したい場合は?

これまでのサンプルコードでは、英語の文章を日本語に翻訳する処理でした。

逆に日本語の文章を英語に翻訳したい場合はどうすればいいのでしょうか。

実はサンプルコードの9行目に定義している言語設定を書き換えるだけで英訳に変更可能です。

和訳の場合は「JA」ですが、英訳の場合「EN」にします。

その上で、翻訳したいテキストを日本語にすれば、DeepLのAPIレスポンス結果が日本語になります。

GAS×DeepLで高性能翻訳アプリを簡単開発

DeepLのAPIを活用すれば、Google Apps Script(GAS)で簡単に高性能な翻訳アプリが開発できます。

例えば、SlackやLineに英語文を送ると、日本語に翻訳してくれるボットも作ることができます。

GASでのOCR機能を組合わせれば、画像→OCR→翻訳といった処理もスクリプトで実装可能です。

まとめ・終わりに

今回、Google Apps Script(GAS)でDeepLのAPIにリクエストする方法を紹介しました。

DeepLのAPIを使えば、簡単に高性能な翻訳をGASスクリプトに組み込むことができます。

GASではGoogle翻訳を使うケースが多いですが、DeepLのほうがより自然な日本語に訳すことができます。

無料版でも十分な使用枠があるので、SlackやLineボット、その他WebアプリケーションなどがGASスクリプトで簡単に実装可能です。

ぜひ、DeepLのAPIを使った簡単なアプリケーションを作ってみたい場合はGASで実装してみましょう。