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")
になる。
ここまでコメント*/
}
| 固定リンク
コメント