大量な日本語コンテンツ(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);
}
}
実行すると下記のイメージになります:
上記の処理はA1:A3のセルにある日本語のコンテンツを翻訳し、B1:B3に翻訳した内容をセットするという流れです。
少し補足しますと:
getValues()
は複数の値を配列形式で返すことに対し、getValue()
は一つの値を返しくれます。
今回の場合は大量処理なので、getValues()
にしました。
値をセットする方法は他にもありますが、配列の組み立てとか考えるのがめんどくさいので、ループにしました。
-
var set = LanguageApp.translate(val[i], "ja", "zh-cn");
上記の関数の引数は、「翻訳テキスト」、「翻訳元の言語」、「翻訳する言語」
日本語→英語の場合は "ja", "en"でOK
SpreadsheetからGASの開き方は下記のイメージです:
最後に、翻訳の精度について
googletranslateという機能も使えるが、こちらの記事を読んでたら、精度がそこまでらしいので、LanguageAppを使用しました。
数は打てくれましたが、精度が体感80%で、修正は必ず必要になります。
まあ、作業量は減ったので、気持ちは大分楽になりました。