【Google Apps Script(GAS)】英語のドキュメントを日本語に翻訳するプログラムを作ってみる

2020年4月10日Google Apps

参考書を見ると、「ドキュメントを翻訳する」ことができると書いてあったので、実際にプログラムを作ってみました。

ドキュメント以外にもスプレッドシート、スライドでも使用できるためやり方を知っておくと便利かもしれません。

翻訳にはLanguageAppを使用する

スポンサーリンク

プログラムの肝となる翻訳はGoogle Apps ScriptのLanguageAppサービスのtranslate()メソッドを利用します。

translate()メソッドには「翻訳するテキスト」「元になる言語」「翻訳後の言語」を設定して実行します。

引数説明
textString翻訳するテキスト
sourceLanguageString元となる言語(第一引数のtextに入力した言語)
targetLanguageString翻訳する言語
translate()メソッドのパラメータ

使用例としてはこんな感じです。

function myFunction() {
  var japanese = LanguageApp.translate('This is a pen.', 'en', 'ja');
  Logger.log(japanese);
}

処理フローを検討する

プログラムを書く前に処理フローを検討します。
今回はお試しということで、例外処理や入力チェックなどは省略していますので、必要な場合は処理を入れてください。

処理のIN/OUTはGoogleドキュメントを使っていきます。
英語のGoogleドキュメントを取り込み、日本語のGoogleドキュメントを出力することにします。

Googleドキュメントから文章を取得する

GoogleドキュメントのIDを使って、英文で書かれたGoogleドキュメントを取得して開きます。
開いたGoogleドキュメントから本文のテキストを取得します。

// Googleドキュメントから文章を取得する
var doc = DocumentApp.openById('abcdefghijklmnopqrstuvwxyz1234567890');
var bodyText = doc.getBody().getText();

取得した文章を翻訳する

Googleドキュメントの本文テキストを取得したら、LanguageAppサービスのtranslate()メソッドを使って翻訳します。

// 取得した文章を翻訳する
var bodyTextJa = LanguageApp.translate(bodyText, 'en', 'ja');

translate()の第2、第3引数に指定する言語の種類についてはGoogle Cloudの言語サポートページが参考になります。

新しいファイルに書き込む

新しくGoogleドキュメントを作成し、LanguageAppサービスのtranslate()メソッドで翻訳した結果を書き込みます。

ファイル名に付与しているtargetLanguageはプログラムの最初に’ja’を代入しています。

// 新しいファイルに書き込む
var translateDoc = DocumentApp.create(doc.getName() + '_' + 'ja');
var body = translateDoc.getBody();
body.setText(bodyTextJa);

DocumentApp.create()を使用すると「マイドライブ」配下に翻訳されたファイルが出力されますでの、任意のフォルダに移動する必要があります。

プログラム全体

スポンサーリンク

プログラム全体としてはそれほど大規模ではありませんが、色々な場面で汎用的に使用するにはもう少し改良が必要です。

translate()メソッドの第3引数、ファイル名に付与する’ja’を変数に代入しています。

function myFunction() {
  var targetLanguage = 'ja';
  
  // Googleドキュメントから文章を取得する
  var doc = DocumentApp.openById('abcdefghijklmnopqrstuvwxyz1234567890');
  var bodyText = doc.getBody().getText();
  
  // 取得した文章を翻訳する
  var bodyTextJa = LanguageApp.translate(bodyText, 'en', targetLanguage);
  
  // 新しいファイルに書き込む
  var translateDoc = DocumentApp.create(doc.getName() + '_' + targetLanguage);
  var body = translateDoc.getBody();
  body.setText(bodyTextJa);
}

まとめ

LanguageAppサービスを使用して翻訳するプログラムを作成しました。
Googleドキュメント以外でも、各サービスでテキストを翻訳できるので、応用シーンはたくさんあるかと思います。

関数化して、ドキュメントの翻訳を自動化もできるかもしれません。