2022/09/01に更新

【GASで翻訳】入力した文章をリアルタイムで高精度に翻訳する

学習スプレッドシート

セルに文章を入力するとリアルタイムで隣のセルに翻訳結果が表示されるGoogle Apps Scriptです。思いついた文章を翻訳しつづけたいときにどうぞ。

こんな悩みを解決します


  • 文章を翻訳してほしいが、翻訳サービスにコピペするのは面倒。
  • リアルタイムでどんどん翻訳してほしい。
  • GOOGLETRANSLATE関数は翻訳精度が低いので使えない・・・。

用意するもの


特にありませんが、スプレッドシートのコンテナバインド型として実装してみました。

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


  • セルに文章を入力すると、右隣のセルに翻訳されたテキストが表示されます。
  • ほとんどすべての言語に対応しています(サンプルは日本語から英語)

使い方


1.事前準備

スクリプトの「事前設定エリア」を編集します。
翻訳元(自分が入力する言語)と翻訳先の言語を指定します。
日本語なら「ja」、英語なら「en」になります。
他の言語を指定したい場合は下記リンクから言語コードをご確認ください。
https://cloud.google.com/translate/docs/languages

2.トリガーの設定

事前設定エリアを更新したら保存して、トリガーの設定を行います。
セルの編集時に発火してほしいのでこのように設定します。

  • 実行する関数: realtime_translating
  • デプロイ時に実行: HEAD
  • イベントのソース: スプレッドシートから
  • イベントの種類: 編集時
3.動作確認

セルに文章を入れてみると・・・

翻訳されました!

次の行に移動してどんどん文章を入力していくと・・・どんどん翻訳されていきます。
楽しいですね。

4.注意点

タイピングが早いとトリガー「編集時」がうまく発動しないかもしれません。
翻訳結果が表示される前に次の行を入力し終えてしまうと、翻訳されない場合がありました。
少しゆっくり入力するのがよさそうです。

なお、翻訳機能の呼び出しは無償ユーザーで5,000回/day、有償ユーザーで20,000回/dayです。
使いすぎに注意しましょう。
制限の詳細はQuotas for Google Services | Apps Script | Google Developersをご確認ください。

スクリプト


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

function realtime_translating(e) {
  // セルの値が変わったときに実行される関数

  // ########## 事前設定エリア ここから ##########

  // 翻訳元と翻訳先の言語を指定してください
  // 指定できる言語コードはこちら
  // https://cloud.google.com/translate/docs/languages

  const lang_from = 'ja'; // 翻訳元(自分が入力する文章の言語)
  const lang_to = 'en'; // 翻訳先

  // ########## 事前設定エリア ここまで ##########


  // 編集されたセルの値を取得
  const value = e.range.getValue();

  // 開いているスプレッドシートのオブジェクトを取得
  const ss = SpreadsheetApp.getActiveSpreadsheet();

  // 編集したシートのオブジェクトを取得
  const edited_sheet = ss.getActiveSheet();

  // LanguageAppを利用して翻訳を実行する
  const sentence_translated = LanguageApp.translate(value, lang_from, lang_to);

  // 編集されたセルの1つ右のセルの範囲オブジェクトを取得
  const range = edited_sheet.getRange(e.range.getRow(), e.range.getColumn() + 1);

  // 書き込みを実行
  range.setValue(sentence_translated);

}

関連するアプリ


タグ一覧

最新のアプリ

人気のアプリ

ページトップに戻る
myfunc.jp