見出し画像

スプレッドシート/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で


いいなと思ったら応援しよう!