
スプレッドシート/Excelの翻訳作業を効率化:GOOGLETRANSLATE関数とTRANSLATE関数を活用
こんにちは。スーパーソフトウエア東京オフィス技術部の加藤です。
海外拠点を活用したオフショア開発は、コスト削減や専門知識・スキルの活用など、多くのメリットをもたらします。しかしその一方で、ドキュメントの翻訳作業という悩みの種も抱えています。
特に、表形式のドキュメント(スプレッドシートやExcel)を翻訳して英語版を作成する作業は、手間がかかる上に煩わしく感じますよね。
「何か効率的な方法はないのか?」
そう思っている方も多いのではないでしょうか?
実は、GoogleスプレッドシートとExcelには、翻訳作業を効率化する強力なツールが用意されているんです。それが、GOOGLETRANSLATE関数とTRANSLATE関数です!
GOOGLETRANSLATE関数(Googleスプレッドシート)
GOOGLETRANSLATE関数は、Googleスプレッドシートで利用できる翻訳関数です。
構文
GOOGLETRANSLATE(text, source_language, target_language)
text: 翻訳したいテキスト(セル参照も可)
source_language: 翻訳元の言語コード(例: "ja" = 日本語, "en" = 英語)
target_language: 翻訳先の言語コード

TRANSLATE関数(Excel)
TRANSLATE関数は、Excelで利用できる翻訳関数です。
GASと同じですね。
構文:
TRANSLATE(text, source_language, target_language)
text: 翻訳したいテキスト(セル参照も可)
source_language: 翻訳元の言語コード(例: "ja" = 日本語, "en" = 英語)
target_language: 翻訳先の言語コード

VBAマクロ/Google Apps Scriptによるシート全体の翻訳
大量のドキュメントやシート全体の翻訳には、VBAマクロ(Excel)やGoogle Apps Script(スプレッドシート)を利用すると、さらに効率的に作業を進めることができます。
VBAマクロ(Excel)の例
Sub 日本語から英語への翻訳()
Dim row As Long
Dim col As Long
Dim region As Range
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim str As String
Set ws1 = ActiveSheet
Set ws2 = Worksheets("eng")
Set region = ActiveCell.CurrentRegion
row = region.Rows.Count
col = region.Columns.Count
For i = 1 To col
For j = 1 To row
ws2.Cells(j, i).FormulaR1C1 = "=TRANSLATE(sheet1!RC,""ja"",""en"")"
Next
Next
ws1.Cells.Copy
ws2.Cells.PasteSpecial Paste:=xlPasteFormats
ws1.Cells.Copy
ws2.Cells.PasteSpecial Paste:=xlPasteColumnWidths
End Sub
サンプルのシート(sheet1)を作成します。
マクロを実行します。

シートを丸ごと翻訳し、書式も揃えることができました。

Google Apps Script(スプレッドシート)の例
JavaScript
function 日本語から英語への翻訳() {
// シート1とシート2を取得
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = ss.getSheetByName("シート1");
var sheet2 = ss.getSheetByName("eng");
// シート2が存在しない場合は作成
if (!sheet2) {
sheet2 = ss.insertSheet();
sheet2.setName("eng");
}
// シート1のデータを取得
var data = sheet1.getDataRange().getValues();
// var data = sheet1.getRange(1, 1, 25, 5).getValues();
// シート2にデータを書き込み
for (var i = 0; i < data.length; i++) {
for (var j = 0; j < data[i].length; j++) {
var cell = sheet1.getRange(i + 1, j + 1);
var value = data[i][j];
// 日本語が含まれている場合は翻訳
if (typeof value === "string" && /[ぁ-んァ-ン一-龯]/.test(value)) {
value = LanguageApp.translate(value, "ja", "en");
}
dest=sheet2.getRange(i + 1, j + 1).setValue(value);
// 書式をコピー
cell.copyTo(dest, {contentsOnly: false, formatOnly: true});
}
}
// セルの高さ・幅をそれえます。
for (var i = 0; i < data.length; i++) {
var rh = sheet1.getRowHeight(i+1);
sheet2.setRowHeight(i+1,rh);
}
for (var j = 0; j < data[0].length; j++) {
var cw = sheet1.getColumnWidth(j+1);
sheet2.setColumnWidth(j+1,cw);
}
}
こちらが日本語のシートです。

スクリプトを実行した後のシートの翻訳結果です。

GOOGLETRANSLATE関数とTRANSLATE関数は、スプレッドシート/Excelでの翻訳作業を効率化する上で非常に役立つツールです。VBA/JavaScriptを使うことで、大量のワークシートの翻訳作業を自動化できます。
▼採用情報
▼新卒情報はWantedlyで