« 『KISS ナイト・イン・ラスベガス』を堪能 | トップページ | セル内改行ごとに文章を分ける。 »

Googleスプレッドシート上で文字列を翻訳する関数

この記事は自分用の覚書です。

T.M さん。

Googleスプレッドシートのセルに入っている文字列を、Google Apps Script を使って翻訳するカスタム関数です。

function から この記事の一番下にある } までコピーして、Googleスプレッドシートのスクリプトエディタに貼り付けてください。

詳細はコメントに書いてあります。

------------------------------------------------

function translation(originalText, translateFrom, translateInto) {

  if ( originalText.length > 0 ) {
    return LanguageApp.translate(originalText, translateFrom, translateInto);
  } else {
    return '';
  }
 
 
/*ここからコメント
このコードを使うことで、
=translation(A2,"en","ja")
といったカスタム関数で、Googleスプレッドシートのセルに入っている文字列を指定した言語に翻訳できる。
(上記の数式は、「セル A2 に入っている "英文" を "和文" に訳する」数式)

裏でGoogle翻訳のサービスを呼び出して翻訳する。
GOOGLETRANSLATE関数を使うよりも、翻訳の精度が高い。


■コード内で使っている変数について
originalText, translateFrom, translateInto の3つは変数。
translateメソッドの引数としては、
var originalText
などといった変数の宣言は不要。

・originalText
カスタム関数の引数のうち、セル参照を受け取るための変数。
・translateFrom
翻訳したい原文が何語なのかの明示を受け取るための変数。
・translateInto
原文を何語に翻訳するかの指定を受け取るための変数。


■このコードを使う準備。
1.このコードをコピーする。
一行目の function から一番下の行の } まで。

2.翻訳したい文字列が入っているGoggleスプレッドシートを開く。

3.メニューの「ツール」から「スクリプトエディタ」を選択。

4.スクリプトエディタが別タブで開く。
あらかじめ書かれているコードは削除する。

5.このコードを貼り付ける。

6.「無題のプロジェクト」と書かれてある左上の欄に、任意の名前をつける。
全角日本語や半角の英数、アンダーバーが使える。

7.コードを保存する。
スクリプトは、保存操作をしないと保存されない。

8.いったんスクリプトエディタのタブを閉じる。
これで準備完了。

このカスタム関数が使えるのは、そのGoogleスプレッドシートでだけ。
別のスプレッドシートで使うには、同じように準備することが必要。


■カスタム関数の使い方
例:GoggleスプレッドシートのセルA2に入っている英文を和訳して、セルB2に和文を表示する。
セルB2に次の式を入力する。

=translation(A2,"en","ja")

英数半角の入力モードにして、 = に続いてカスタム関数名を記述する。ここでは、 translation 。

次に、 ( ) で囲んだ引数を記述する。引数は , (カンマ)で区切る。
1つ目の引数は英文が入っているセルをセル参照の形式で指定。ここでは、 A2 。
2つ目の引数で、セルに入っている文字列の言語を指定。 "en" は「英語」ということ。 en は文字列なので " " で必ず囲む。
3つ目の引数で、翻訳結果を何語で表示するかを指定。 "ja" は「日本語」ということ。 こちらも " " で囲む。

translateメソッドの構文は、
translate(text, sourceLanguage, targetLanguage)
になる。
sourceLanguage(ソース言語)とtargetLanguage(ターゲット言語)は、iso-639-1 コードを使用して指定する。

・language codeについて
https://cloud.google.com/translate/docs/translating-text#language-params

List of ISO 639-1 codes
https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes

・if...else文について
条件として、
originalText.length > 0
を判定している。意味は、「変数 originalText が 0 ではない。」ということ。
=translation(A2,"en","ja") の数式によって、
変数 originalText は、セル A2 に入っている値を受け取る。
A2 に文字列が入っていれば、「セル A2 は 0 ではない」ということになる。
翻訳したい文字列がセルに入っている場合にのみ、翻訳結果が表示されるようにするため。

セルに文字列が入っている場合は、条件が成立するので、 LanguageAppクラスのtranslateメソッドが実行されて、その結果をreturn文が返してくる。
(数式を入れたセルに訳文が表示される。)

セルが空の場合は、 条件が成立しないので、translateメソッドが実行されず、else以下のreturn文が実行されて空欄が返される。
(数式を入れたセルには何も表示されない。)

もし、和文を英訳したい場合は、
和文が入ったセルを、1つ目の引数で指定して、上記の2つ目と3つ目の引数を入れ替える。
セルA2に和文が入っていて、英訳したい場合の数式は、

=translation(A2,"ja","en")

になる。

ここまでコメント*/
}

|

« 『KISS ナイト・イン・ラスベガス』を堪能 | トップページ | セル内改行ごとに文章を分ける。 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: Googleスプレッドシート上で文字列を翻訳する関数:

« 『KISS ナイト・イン・ラスベガス』を堪能 | トップページ | セル内改行ごとに文章を分ける。 »