GASを使ってスプレッドシート上で翻訳する方法

Googleスプレッドシートを使って翻訳をしようと思っているんだけど、どの方法がいいのか悩んでいて…GASってどう使えばいいのかな?
猫男
猫男
catman
catman
そうか。GASとスプレッドシートの組み合わせで翻訳が簡単になるんだ。catmanが詳しく教えてやろう!

GASを使ってスプレッドシートで翻訳する方法

GAS(Google Apps Script)を使うことで、スプレッドシート内にあるデータを自動的に翻訳できるぞ。

スクリプトを書く

まずは、スプレッドシートとGASを連携させ、翻訳機能を実装するための準備をしよう。


function myFunction() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const range = sheet.getRange("A2:A10");
  const values = range.getValues();

  for (let i = 0; i < values.length; i++) {
    const text = values[i][0];
    const translatedText = LanguageApp.translate(text, "en", "ja");
    sheet.getRange(i + 2, 2).setValue(translatedText);
  }
}

これで、スプレッドシートのA列に英語が入力されると、B列に日本語に翻訳された内容が表示される。

スクリプトの解説

GASでの翻訳を行うためには、LanguageAppライブラリを使用する。

  • SpreadsheetApp.getActiveSpreadsheet(): 現在開いているスプレッドシートを取得する。
  • getRange(“A2:A10”): A列の2行目から10行目までの範囲を指定する。
  • getValues(): 指定した範囲の値を2次元配列で取得する。
  • LanguageApp.translate(): 引数に翻訳する文字列、元の言語コード、翻訳したい言語コードを指定して翻訳を行う。
  • setValue(): 指定したセルに値を設定する。

 

なるほど!これなら一列丸ごと翻訳できるんだね。便利そう!
猫男
猫男
catman
catman
ああ、効率的だろう?どんどん使いこなしていこう!

GASで翻訳を自動化する方法

翻訳を行うには、トリガーを設定して自動的に翻訳が実行されるようにすることもできる。例えば、スプレッドシートが更新されたときに自動でスクリプトを実行する。

編集時に自動実行されるトリガーの設定

トリガーを使うことで、ユーザーが翻訳するテキストを追加した際に自動で翻訳が行えるよう設定できる。


function onEdit(e) {
  const range = e.range;
  
  if (range.getColumn() == 1) {
    const text = range.getValue();
    const translatedText = LanguageApp.translate(text, "en", "ja");
    range.offset(0, 1).setValue(translatedText);
  }
}

このスクリプトは、A列に新しいデータが入力されるたびに自動で翻訳する。

スクリプトの解説

onEditトリガーを使って、編集内容がA列に書き込まれた際に自動実行されるスクリプトだ。

  • e.range: 編集されたセルの範囲を取得する。
  • getColumn(): 現在の列番号を取得する。
  • offset(0, 1): 編集されたセルから右のセルを指定する。

練習問題

GASを使って、以下のようなスクリプトを作成し、A列にある英語の文を自分で指定した言語に翻訳するスクリプトを書いてみよう。

  • スプレッドシートのA列のデータを自動で翻訳し、B列に書き込みます。
  • 翻訳する言語は自由に選べます。

 

解答・解説


function myTranslation() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const range = sheet.getRange("A2:A");
  const values = range.getValues();

  for (let i = 0; i < values.length; i++) {
    const text = values[i][0];
    const translatedText = LanguageApp.translate(text, "en", "es"); // スペイン語への翻訳
    sheet.getRange(i + 2, 2).setValue(translatedText);
  }
}

このスクリプトは英語をスペイン語に翻訳するバージョンだ。「es」を他の言語コードに変更することで、翻訳の言語も変更できる。getRange(“A2:A”)は、スプレッドシートのA列全体を対象とし、入力データを動的に処理することを可能にする。