Google スプレッドシートで簡単に日本語と英語の翻訳を行う方法

JavaScript

スプレッドシート内のテキストを簡単に日本語と英語に翻訳する方法をGoogle Apps Scriptを使ってご紹介します。

使用技術

  • Google スプレッドシート: データの保存と管理に使用。
  • Google Apps Script: 主にGoogle スプレッドシートを操作するためのプログラムを記述。
  • このスクリプト言語は、JavaScriptに基づいています。
  • Google Apps Script UI Service: スプレッドシートにカスタムメニューを追加するために使用。
  • LanguageApp API: Google Apps Script内で翻訳を行うためのAPI。
  • JSON: 配列やオブジェクトを簡単に扱うためにJSON形式を使用。
  • Data Range: スプレッドシート内の特定の範囲を指定してデータを取得。
  • Data Validations: セルに特定の入力規則が設定されているかどうかを判定。
  • Formulas: スプレッドシート内のセルで使用されている数式を確認。
  • UI Alerts: ユーザーにエラー情報や成功メッセージを表示。

機能

  • カスタムメニューの追加: スプレッドシートに「翻訳」メニューを追加し、日本語と英語の翻訳オプションを提供。
  • シートのコピー: アクティブなシートをコピーして新しいシートを作成。新しいシートの名前も翻訳される。
  • セル内テキストの翻訳: 日本語または英語のテキストを含むセルを対象言語に翻訳。
  • 数式のスキップ: セルに数式が含まれている場合、そのセルは翻訳から除外される。
  • データ検証の考慮: 入力規則が設定されているセルは翻訳から除外される。
  • エラーハンドリング: 翻訳中にエラーが発生した場合、そのセルの位置をユーザーに通知。
  • 成功メッセージ: 翻訳が成功した場合、確認メッセージが表示される。
  • バッチ翻訳のサポート: 複数のテキストを一度に翻訳する機能も含まれている(ただし、この機能は現在のところスクリプト内で直接使用されてはいない)。

ソースコード

JavaScript
function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Translation')
    .addItem('Japanese > English', 'jpToEn')
    .addItem('English > Japanese', 'EnToJp')
    .addToUi();
}

function jpToEn() {
  translate('ja', 'en');
}

function EnToJp() {
  translate('en', 'ja');
}

function batchTranslate(textArray, inputLang, outputLang) {
  var concatenatedText = textArray.join('|');
  var translatedText = LanguageApp.translate(concatenatedText, inputLang, outputLang);
  return translatedText.split('|');
}

function translate(inputLang, outputLang) {
  var errorCells = [];
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  
  var translatedSheetName = LanguageApp.translate(sheet.getName(), inputLang, outputLang);
  var dest = sheet.copyTo(ss);
  dest.setName(translatedSheetName);
  
  var originalRange = sheet.getDataRange();
  var originalValues = originalRange.getValues();
  var originalFormulas = originalRange.getFormulas();
  var dataValidations = originalRange.getDataValidations();

  var translatedValues = JSON.parse(JSON.stringify(originalValues));

  for (var i = 0; i < originalValues.length; i++) {
    for (var j = 0; j < originalValues[i].length; j++) {
      if (dataValidations && dataValidations[i][j] !== null) {
        continue;  // Skip cells with data validation
      }
      if (originalFormulas[i][j] === "" && isNaN(originalValues[i][j]) && typeof originalValues[i][j] === "string") {
        try {
          var translatedText = LanguageApp.translate(originalValues[i][j], inputLang, outputLang);
          dest.getRange(i + 1, j + 1).setValue(translatedText);
        } catch (e) {
          errorCells.push(`${String.fromCharCode(65 + j)}${i + 1}`);
        }
      }
    }
  }

  if (errorCells.length > 0) {
    SpreadsheetApp.getUi().alert(`Errors occurred in the following cells: ${errorCells.join(", ")}. Please check these cells manually.`);
  } else {
    SpreadsheetApp.getUi().alert('Translation completed. Please check the new sheet.');
  }
}

// MIT License
// Copyright (c) 2023 [ANJI]
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.

使い方

  1. Google スプレッドシートを開く: 新しいスプレッドシートを開くか、既存のスプレッドシートを選びます。
  2. スクリプトエディタを開く: 「拡張機能」メニューから「Apps Script」を選択してスクリプトエディタを開きます。
  3. コードを貼り付け: 与えられたJavaScriptコードをスクリプトエディタにコピー&ペーストします。
  4. 保存と閉じる: スクリプトを保存した後、エディタを閉じます。
  5. スプレッドシートに「翻訳」メニューが追加: スクリプトエディタを閉じた後、スプレッドシートに戻ると「翻訳」メニューが追加されています。
  6. 翻訳オプションを選択: 「翻訳」メニューから、翻訳したい言語のペア(「日本語 > 英語」または「英語 > 日本語」)を選びます。
  7. 翻訳の実行: オプションを選択した後、スクリプトが自動でアクティブなシートの内容を翻訳し、新しいシートを作成します。
  8. エラーチェック: エラーが発生した場合、アラートでその位置が通知されます。手動で修正が必要です。
  9. 確認メッセージ: 翻訳が成功すると、確認メッセージが表示されます。

コメント

タイトルとURLをコピーしました