スプレッドシートのテキストを丸ごと英訳するGASマクロを作ってみた

スプレッドシートのテキストを丸ごと英訳するGASマクロを作ってみた

Yasuaki Machida

Yasuaki Machida

Technology部の町田です。

翻訳ツールとして知名度の高いDeepLはAPIも提供しており、各種ツールと連携することでサイトだけでなくスプレッドシートのテキストなども翻訳可能です。

私はもともと、スプレッドシートで引数として指定したセルの内容をDeepLAPIで英訳するDeepL関数を使っていました。しかし、これだと元の内容とは別に翻訳後のテキストを記載するセルを用意する必要があること、シート単位で関数をコピペする必要があり、シートが複数存在するスプレッドシートを一括で英訳するには少し不便です。

そこで今回は、DeepL APIを使ってスプレッドシートの内容を一括で翻訳するGASマクロを作りましたのでご紹介します。

DeepL APIを使うための準備

まずはDeepL APIの公式サイトからアカウント登録をおこなう必要があります。

DeepL API

無料プランと有料のProプランがありますが、無料プランでも1ヶ月あたり50万字まで翻訳できます。使用頻度などを考慮してプランを選びましょう。

サイト右上の「無料で体験する」ボタンからアカウント登録できます。


画面に従い情報を入力していきます。無料プランでもクレジットカード情報を登録する必要がありますが、複数アカウントでの不正利用を防ぐためなので、自動で課金されることはありません。


登録が完了したらアカウント情報からAPIキーが取得できます。

DeepL APIでまるごと翻訳するためのGASマクロ

GASマクロは以下です。”YOUR API KEY”の箇所をDeepL APIアカウントで発行されるAPIキーに置き換えて使用してください。

function translateSpreadsheet() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = ss.getSheets();

  for (var i = 0; i < sheets.length; i++) {
    var sheet = sheets[i];
    var range = sheet.getDataRange();
    var values = range.getValues();
    var translatedValues = [];

    for (var j = 0; j < values.length; j++) {
      var row = values[j];
      var translatedRow = [];
      for (var k = 0; k < row.length; k++) {
        if (row[k]) {
          translatedRow.push(translateWithDeepL(row[k]));
        } else {
          translatedRow.push("");
        }
      }
      translatedValues.push(translatedRow);
    }
    range.setValues(translatedValues);
  }
}

function translateWithDeepL(text) {
  var apiEndpoint = "https://api-free.deepl.com/v2/translate";
  var apiKey = "YOUR API KEY";  // あなたのDeepL APIキーをこちらに入力してください
  var payload = {
    'auth_key': apiKey,
    'text': text,
    'target_lang': 'EN'
  };

  var options = {
    'method' : 'post',
    'payload' : payload
  };

  var response = UrlFetchApp.fetch(apiEndpoint, options);
  var json = JSON.parse(response.getContentText());

  if (json.translations && json.translations.length > 0) {
    return json.translations[0].text;
  } else {
    return text;  // 翻訳に失敗した場合、元のテキストを返す
  }
}

使い方

  1. Googleスプレッドシートを開く
  2. 拡張機能からApps scriptを選択
  3. 上記GASスクリプトを貼り付け→保存
  4. 関数を指定し、実行ボタンを押す
  5. 実行完了まで待つ

DeepL関数との使い分け

冒頭で説明した通り、スプレッドシートではDeepL関数も使えます。今回ご紹介したマクロとDeepL関数のメリット・デメリットや、推奨利用シーンをまとめました。

DeepL関数 一括翻訳マクロ
メリット ・日本語版と英語版を同一ドキュメントで管理できる
・編集内容がリアルタイムで翻訳にも反映される
・ボタン1つでドキュメント内のすべてのセルを英訳できる
デメリット ・翻訳対象のセルすべてに対し関数を入力する必要がある
・ドキュメントを開く度にAPIも用いて翻訳するためAPI容量の消費が早い
・翻訳後に元ドキュメントに修正が入った場合は修正箇所を手動で反映する必要がある
推奨シーン ・1からドキュメントを作成する際
・セルの内容に修正が入る可能性がある資料を翻訳したい
・クライアントから受領した資料を英訳したい
・複数シート存在するボリュームの大きい資料を英訳したい

DeepL APIの無料版は月に50万文字までという制限があります。これを超えるとAPIが使用できなくなるので注意してください(参考までに、80シート近くあるシナリオテスト項目書を翻訳したところ、一度で40万文字弱消費してしまいました)。

さいごに

システム開発の現場に限らず、海外メンバーとのコミュニケーションが発生する際には翻訳ツールをうまく活用することで業務効率化につながるかと思います。

本記事がご参考になれば幸いです。

最後になりますが、LIGブログではAIやアプリ・システム開発など、テクノロジーに関するお役立ち記事をお届けするメルマガを配信しています。

<お届けするテーマ>
  • 開発プロジェクトを円滑に進めるためのTIPS
  • エンジニアの生産性が上がった取り組み事例
  • 現場メンバーが生成AIを使ってみた
  • 開発ツールの使い方や開発事例の解説
  • AIをテーマにしたセミナーの案内
  • 最新のAI関連ニュースまとめ など

「開発ツールの解説や現場の取り組みを知りたい!」「AIに関する最新情報を集めたい!」とお考えの方は、ぜひお気軽に無料のメルマガをご購読くださいませ。

購読する(無料)

この記事のシェア数

Yasuaki Machida
Yasuaki Machida Technology / Consultant / Leader / 町田 恭晃

アクセンチュア株式会社にて、半導体製造機器メーカー基幹システム刷新PJのプロジェクトマネジメントやグローバル体制構築支援に従事。新卒で入社した日系最大手SIerではインターネットバンキングの開発も経験。​

このメンバーの記事をもっと読む
業界歴10年超のベテランが最適なシステム開発を提案します
LIGに相談する サービス概要を見る