DeepL APIを使ってスプレッドシートで自然な翻訳を実現する方法

過去の記事で、Google翻訳を使った一括翻訳の方法をご紹介しましたが、手軽に利用できる反面、文脈に合わない不自然な翻訳になったりして、修正に時間がかかることも…。

簡単な翻訳ならGoogle翻訳で十分ですが、細かいニュアンスまで英語に翻訳したい場合はDeepLを使うと便利です。

DeepLは翻訳精度が高く、ビジネス用途などの自然な表現が求められる場面で活躍します。

DeepL API を利用することで、スプレッドシート内でDeepL翻訳ができるようになります。

この記事では、DeepL APIとGoogle Apps Script (GAS) を使って、スプレッドシート内で精度の高い翻訳を実現する方法をご紹介します。

目次

Google翻訳とDeepLの違い

Google翻訳
  • メリット
    手軽で無料、汎用性が高い
  • デメリット
    一部の言語や文脈では、直訳的でぎこちない翻訳になる場合がある
DeepL翻訳
  • メリット
    文脈を考慮した自然な翻訳。専門的な文章やビジネス文書で高評価
  • デメリット:
    API利用には無料プランだと制限がある(500,000文字/月)

完成イメージ

大量のテキストを一括で翻訳でき、時間短縮
DeepLの高精度な翻訳で手作業の見直し回数を減らせる

今回のスクリプトは日本語→英語への翻訳となります。

手順

DeepL APIキーの取得

GASを実行するにあたって、DeepL APIキーが必要となります。

DeepL APIキーの取得方法についてはこちらの記事をご参照ください。

スプレッドシートの準備

  • A列に翻訳したい日本語テキストを入力
  • 1行目はヘッダー行として使用

スプレッドシートを開いて、A列に翻訳したいテキストを入力します。

なお、今回のスクリプトは現在開いているアクティブなシートを対象とします。

別のシート名を指定したい場合は、スクリプトを調整する必要があります。

GASの実行

STEP
GASエディタを開く

Googleスプレッドシートを開き、メニューの「拡張機能」から「Apps Script」をクリックしてGASエディタを開きます。

STEP
GASスクリプトの作成

function myFunction(){

}

が最初から入っているため、消去して以下のスクリプトを貼り付けます。

function translateText() {
  // スクリプトプロパティからAPIキーを取得
  const properties = PropertiesService.getScriptProperties();
  const DEEPL_API_KEY = properties.getProperty('DEEPL_API_KEY');
  
  if (!DEEPL_API_KEY) {
    throw new Error('APIキーが設定されていません。スクリプトプロパティにDEEPL_API_KEYを設定してください。');
  }
  
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const range = sheet.getRange(2, 1, sheet.getLastRow() - 1, 1); // A列のデータ範囲
  const texts = range.getValues();
  
  const results = texts.map(row => {
    const response = UrlFetchApp.fetch('https://api-free.deepl.com/v2/translate', {
      method: 'post',
      payload: {
        auth_key: DEEPL_API_KEY,
        text: row[0],
        target_lang: 'EN' // 翻訳先の言語コード(例:'EN' = 英語)
      }
    });
    const json = JSON.parse(response.getContentText());
    return [json.translations[0].text];
  });
  
  const outputRange = sheet.getRange(2, 2, results.length, 1); // B列に結果を出力
  outputRange.setValues(results);
}
スクリプトの説明
APIキーの取得
const properties = PropertiesService.getScriptProperties();
const DEEPL_API_KEY = properties.getProperty('DEEPL_API_KEY');
  • Google Apps Script の PropertiesService を使用してスクリプトプロパティに保存された DEEPL_API_KEY を取得します。
  • もしスクリプトプロパティにキーが設定されていない場合、次の if 文でエラーをスローします。
スクリプトプロパティが未設定の場合のエラーハンドリング
if (!DEEPL_API_KEY) {
  throw new Error('APIキーが設定されていません。スクリプトプロパティにDEEPL_API_KEYを設定してください。');
}
  • DEEPL_API_KEY が取得できなかった場合にエラーを発生させ、実行を中断します。
  • APIキーが未設定であることを明確に伝えるためのメッセージを表示します。
スプレッドシートのデータ範囲取得
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const range = sheet.getRange(2, 1, sheet.getLastRow() - 1, 1); // A列のデータ範囲
const texts = range.getValues();
  • アクティブなスプレッドシートを取得し、A列のデータ(2行目から最終行まで)を読み取ります。
  • getValues() でセルの値を配列として取得します。
  • A列の1行目はヘッダー行として使用されることを想定。
  • 2行目以降を翻訳対象としています。
DeepL APIへのリクエスト
const results = texts.map(row => {
  const response = UrlFetchApp.fetch('https://api-free.deepl.com/v2/translate', {
    method: 'post',
    payload: {
      auth_key: DEEPL_API_KEY,
      text: row[0], // 翻訳するテキスト
      target_lang: 'EN' // 翻訳先の言語(ここでは英語)
    }
  });
  const json = JSON.parse(response.getContentText());
  return [json.translations[0].text];
});
  • A列の各行のテキストをDeepL APIに送信し、翻訳結果を取得します。
  • DeepL APIのエンドポイント https://api-free.deepl.com/v2/translate を利用。
  • payload に必要なパラメータを指定してPOSTリクエストを送信します。
  • auth_key: スクリプトプロパティから取得したAPIキー。
  • text: 翻訳するテキスト。
  • target_lang: 翻訳先の言語コード(ここでは英語)。
翻訳結果をスプレッドシートに出力
const outputRange = sheet.getRange(2, 2, results.length, 1); // B列に結果を出力
outputRange.setValues(results);
  • 翻訳結果をB列(2行目以降)に出力します。
  • results.length は翻訳結果の行数、1 は列数を指定。
  • A列に対応するB列のセルに翻訳結果が表示されます。
  • 翻訳対象のテキストが多い場合でも、一括で出力可能です。
STEP
スクリプトを保存

スクリプトを書いたら、名前を付けて保存します。

(例:「DeepL翻訳」)

STEP
スクリプトを実行

スクリプトを実行してA列のテキストを翻訳します。

初めてそのスクリプトを実行する場合は権限の確認が必要です。

そのため、『権限を確認』を押します。

許可の詳細手順

「詳細」をクリックします。

無題のプロジェクト(安全ではないページ)に移動」をクリックします。

許可」をクリックします。

STEP
英語に翻訳されたテキストが反映

B列に英訳されたテキストが出力されます。

注意点

DeepL APIの無料プランでは1か月に50万文字までの制限があります。

有料プランでは文字数制限がなくなるため、大量に翻訳する場合は有料プランをご検討ください。

まとめ

DeepL APIとGASを組み合わせることで、スプレッドシートで簡単に高精度な翻訳が実現できます。

最終的には手作業で調整する必要がありますが、その負担を大幅に減らすことができます。

時間を大幅に節約しつつ質の高い結果を得られる強力な方法です。

翻訳が必要な時にぜひご活用ください!

弊社では、Google Apps Script(GAS)を活用した業務効率化のサポートを提供しております。

GASのカスタマイズやエラー対応にお困りの際は、ぜひお気軽にご相談ください。

また、ITツールの導入支援やIT導入補助金の申請サポートも行っております。

貴方の業務改善を全力でサポートいたします。

お問い合わせはこちら

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次