2022/03/20に更新

【GASで時短】様々な言語に翻訳する

学習スプレッドシート

スプレッドシートに書き込んだ日本語から色々な言語に翻訳することができるGoogle Apps Scriptです。変換先の言語は指定できます。標準で用意されている「GOOGLETRANSLATE関数」より賢く翻訳してくれるはず?

こんな悩みを解決します


  • 日本語をまとめて翻訳したい。
  • スプレッドシートのGOOGLETRANSLATE関数は精度が低く困っている。

用意するもの


特にありません。今お使いのスプレッドシートに組み込めます。

このスクリプトで出来ること


  • シートのA列に書き込まれている日本語を翻訳し、B列に書き込みます。
  • 翻訳先の言語は指定可能です。

使い方


1.翻訳したい単語、文章の入力

A列に、翻訳したい日本語を入力します。
単語だけではなく、文章もOKです。ネガティブな文章ばかりですがお気になさらず。

2.スクリプトの実行

上のメニューに有る「スクリプト実行」から「日本語から翻訳する」を実行します。

3.変換先の言語コードの入力

翻訳先の言語を指定します。
主な言語はこちらです。

  • 英語: en
  • 簡体字中国語: zh
  • フランス語: fr
  • ドイツ語: de
  • イタリア語: it

他にも様々な言語が指定可能です。詳しくは https://cloud.google.com/translate/docs/languages を参照してください。

4.結果の確認

B列に翻訳結果が書き込まれます。どれも問題なく翻訳されているように見えます。

5.GOOGLETRANSLATE関数との比較

このスクリプトの翻訳は「LanguageApp」を使用していますが、GOOGLETRANSLATE関数より精度が高いようです。
C列にGOOGLETRANSLATE関数による翻訳結果を載せてみました。たしかに精度が低そうですね・・・。

スクリプト


/**
 * このスクリプトの説明、使い方はこちら。
 * https://myfunc.jp/items/00058/index.html
 */

function onOpen() {
  // スプレッドシートを開いたときに実行される関数

  // UIの取得
  const ui = SpreadsheetApp.getUi()

  // メニューの表示名
  const menu = ui.createMenu('スクリプト実行');

  // メニューに追加するボタン
  menu.addItem('日本語から翻訳する', 'translate_by_languageapp');

  // メニューを画面に追加する
  menu.addToUi();
}


function translate_by_languageapp() {

  // UIを取得
  const ui = SpreadsheetApp.getUi();

  // アクティブなスプレッドシート、シートを取得
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // A列に書き込まれている、変換元の日本語を取得する
  const words_jp = sheet.getRange(1, 1, sheet.getLastRow(), 1).getValues();

  // 変換先の言語を入力してもらう
  const input = ui.prompt('変換先の言語を入力してください。\n参考:https://cloud.google.com/translate/docs/languages', ui.ButtonSet.OK_CANCEL);

  // キャンセルが押されたらスクリプトを終了する
  if (input.getSelectedButton() == ui.Button.CANCEL) {
    return;
  }

  // 入力された言語コードを取得する
  const translate_lang = input.getResponseText();

  // 結果を格納する配列を用意する
  const result = [];

  // 変換元の日本語の数だけループし、翻訳を実行する
  for (let i = 0; i < words_jp.length; i++) {

    // LanguageAppを利用して翻訳する
    let words_translated = LanguageApp.translate(words_jp[i], 'ja', translate_lang);

    // 翻訳結果を配列に追加する
    result.push([words_translated]);

  }

  // B列に書き込むため、必要な範囲を取得する
  let range = sheet.getRange(1, 2, result.length, 1);

  // シートへの書き込み処理
  range.setValues(result);

}

関連するアプリ


タグ一覧

最新のアプリ

人気のアプリ

myfunc.jp