GoogleAppsScript
gas

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

大量な日本語コンテンツ(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に翻訳した内容をセットするという流れです。

少し補足しますと:

1)

getValues()は複数の値を配列形式で返すことに対し、getValue()は一つの値を返しくれます。

今回の場合は大量処理なので、getValues()にしました。

値をセットする方法は他にもありますが、配列の組み立てとか考えるのがめんどくさいので、ループにしました。

2)

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

上記の関数の引数は、「翻訳テキスト」、「翻訳元の言語」、「翻訳する言語」

日本語→英語の場合は "ja", "en"でOK

3)

SpreadsheetからGASの開き方は下記のイメージです:

スクリーンショット 2019-04-14 21.34.02.png

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

googletranslateという機能も使えるが、こちらの記事を読んでたら、精度がそこまでらしいので、LanguageAppを使用しました。

数は打てくれましたが、精度が体感80%で、修正は必ず必要になります。

まあ、作業量は減ったので、気持ちは大分楽になりました。