1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Google Spread Sheet + Google Apps Script で自動翻訳

Last updated at Posted at 2019-04-14

大量な日本語コンテンツ(600行ぐらい)を中国語に翻訳するニーズと出くわし、数行で自力で訳したら、気が滅入ってしまったことが起因でした。

早速本題に入りたいと思います。

例えば、このような会話がGoogle Spread Sheet 上に600行あるとしましょう。

-最近見たい映画とかありますか。

これをGoogle APIで自動翻訳できたら楽だなと思って、GoogleAppsScriptsで何かできないか調べてみました。

function onEdit(){
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var val = sheet.getRange("A1:A3").getValues();

    for (var i = 0; i < val.length; i++) {
        var set = LanguageApp.translate(val[i], "ja", "zh-cn");
        var num = 1 + i;
        var cell = sheet.getRange("B"+num);
        cell.setValue(set);
    }
}

実行すると下記のイメージになります:

スクリーンショット 2019-04-15 10.30.27.png

上記の処理はA1:A3のセルにある日本語のコンテンツを翻訳し、B1:B3に翻訳した内容をセットするという流れです。

少し補足しますと:

getValues()は複数の値を配列形式で返すことに対し、getValue()は一つの値を返しくれます。
今回の場合は大量処理なので、getValues()にしました。
値をセットする方法は他にもありますが、配列の組み立てとか考えるのがめんどくさいので、ループにしました。

  1.  var set = LanguageApp.translate(val[i], "ja", "zh-cn");
    

上記の関数の引数は、「翻訳テキスト」、「翻訳元の言語」、「翻訳する言語」
日本語→英語の場合は "ja", "en"でOK

SpreadsheetからGASの開き方は下記のイメージです:
スクリーンショット 2019-04-14 21.34.02.png

最後に、翻訳の精度について

googletranslateという機能も使えるが、こちらの記事を読んでたら、精度がそこまでらしいので、LanguageAppを使用しました。
数は打てくれましたが、精度が体感80%で、修正は必ず必要になります。
まあ、作業量は減ったので、気持ちは大分楽になりました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?