Photo by Jason Leung on Unsplash
はじめに
Google Apps Scriptでは様々な便利な関数が使用可能であり、その中の1つにLanguageAppというクラスがあります。LanguageAppは、自動翻訳を提供するクラスです。この記事では、Google Apps ScriptとLanguageAppを使用して翻訳作業を自動化する手順をまとめます。
できるようになること
以下のように、この記事では、Googleスプレッドシートのセルにあるテキストを英語から日本語に順番に翻訳させます。なお、日本語のテキストが与えられた場合はそのまま同じ文を返します。Google Apps ScriptとGoogle Apps Scriptから使用できるLanguageAppを使います。
参考文献
以下の公式ドキュメントを参考にさせて頂きました。
Class LanguageApp | Apps Script | Google Developers
The Language service provides scripts a way to compute automatic translations of text.
Google Apps ScriptでのLanguageAppの使い方
インストール作業等は不要です。適当なGoogleスプレッドシートを新規作成し、スクリプトエディタを開きます。そして以下を保存します。公式ドキュメントにも載っているように以下が最も簡単な例となります。
function myFunction() {
var translated = LanguageApp.translate('This is a test', 'en', 'ja');
Logger.log(translated);
}
上記では、This is a test
という文を英語から日本語に翻訳し、その翻訳結果をtranslated
に保存しています。ログから翻訳結果を確認でき、結果は以下のようになります。スクリプトエディタ上でログを確認するには、Ctrl + Enter
で表示します。
[19-06-02 00:04:15:214 JST] これはテストです
なお、上記スクリプトを初めて実行する場合には、承認作業が必要になります。これはGoogle Apps Scriptを実行する際に必要となる共通の作業です。詳しくは以下にまとめていますので必要な方は見てみてください。
Google Apps Scriptの初回実行に必要となる承認手順
Google Apps Scriptを社内向けのシステムで使用することが多いですが、少し前にGoogle Apps Scriptの初回実行時に承認作業を行わないと使えないようになりました。
続いて、スプレッドシートの指定したセル内のテキストを指定した言語に翻訳させるスクリプトを作成します。
スプレッドシートのセル内のテキストを翻訳させるスクリプト
以下のスクリプトは、指定したスプレッドシートのシートで、セルA1からA3にあるテキストを英語から日本語に翻訳し、翻訳結果をセルB1からB3にそれぞれ保存します。
function myFunction() {
var targetSpreadsheet = SpreadsheetApp.openById("スプレッドシートID");
var targetSheet = targetSpreadsheet.getSheetByName('シート名');
for (var i = 1; i < 4; i++) {
// 翻訳対象のテキストが含まれるセル。ここでは、A1 ~ A3
var sourceDoc = targetSheet.getRange("A" + i).getValue();
// 翻訳結果を保存するセル。ここでは、B1 ~ B3
var destRange = targetSheet.getRange("B" + i);
// 翻訳を実行。ここでは英語から日本語への翻訳を指定。
var translate = LanguageApp.translate(sourceDoc, "en", "ja");
// 翻訳結果をdestRangeに保存。
destRange.setValue(translate);
}
}
なお、対応している言語の詳細は以下の公式ドキュメントに記載されています。
言語対応 | Cloud Translation API | Google Cloud
Translation API の認識エンジンは、フレーズベース機械翻訳(PBMT)モデルとニューラル機械翻訳(NMT)モデルで幅広い言語をサポートしています。これらの言語は、このページに記載する言語コード パラメータを使用して、認識リクエスト内に指定します。ほとんどの言語コード パラメータは ISO-639-1 識別子に準拠しています。
Language Appの使用制限について
Language Appの元であるTranslation APIについては明確に無料で使用できる範囲とそれ以上の場合にかかる費用が公式ドキュメントに記載されています。しかし、Google Apps Scriptから使用するLanguage Appについては特に制限が記載されたドキュメントを見つけることができませんでした。Google Apps Script自体には元々制限があり、詳しくは以下の公式ドキュメントに記載されています。この中に特にLanguage Appについての記載はありませんでした。
Quotas for Google Services | Apps Script | Google Developers
Apps Script services impose daily quotas and hard limitations on some features. If you exceed a quota or limitation, your script throws an exception and execution terminates.
もしかすると制限等あるかもしれませんので、各自で確認した上で使用するようお願い致します。
まとめ
Google Apps Script色々な機能が使えてとても便利です。翻訳自体はGoogle翻訳にコピペするだけでも同じ結果が得られますが、少しコピペ回数が増えるならばGoogle Apps Scriptを使って自動化する少し効率化できるかもしれません。
SPONSORED LINK