こんにちは、ブリッジディレクターのイエンです。
これはある日の上司との会話です。
たしかにDeepL翻訳はExcelファイル対応していません。
Google翻訳は2MB以内であればファイルごとの翻訳ができますが、我々のIT業界ではよくExcelで仕様書を書くので、2MBを超えちゃいますね。
目次
GOOGLETRANSLATE関数を使ってもできるじゃん?
Googleスプレッドシートに入力した日本語を多言語に、一気に翻訳して表示できる機能はすでにご存じの方も多いかもしれません。
=GOOGLETRANSLATE(テキスト, ソース言語, ターゲット言語)
しかし、同じ関数を入力すると、時間が無駄になるので、毎回困っています。
オートフィルも使って、行もしくは列ごとには上手く表示できましたが、シート全体の翻訳をすると書式が崩れます。
GASとは?
Google Apps Script(GAS)は、Google Appsの機能を拡張し、軽量のクラウドベースのアプリケーションを構築するためのクラウドベースのスクリプト言語です。
実際に何ができるの?
Apps Scriptを使用して小さなプログラムを作成し、Google Workspace Appsの標準機能を拡張することを意味します。
Apps Scriptを使用すると、繰り返し可能なタスクの自動化し、ドキュメントの作成、ユーザーへの自動メール送信、他のサービスへの接続などの機能を実行できます。
今回はGASを使って、スプレッドシートの自動翻訳ツールを作成してみました。
翻訳ツールの作成方法
1. スプレッドシートの拡張機能タブからApps Scriptを開く
2. 中のコードを削除し、下記のコードをコピペする
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('翻訳')
.addItem('日本語 > English', 'jpToEn')
.addItem('English > 日本語', 'EnTojp')
.addToUi();
}
function jpToEn() {
translate('ja','en')
}
function EnTojp() {
translate('en','ja')
}
function translate(inputLang, outputLang) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var dest = sheet.copyTo(ss);
dest.setName(`${inputLang}_${outputLang}_${sheet.getName()}`)
var range = dest.getDataRange();
var formula = "=iferror(googletranslate('" + sheet.getName() + "'!" + "R[0]C[0],\"" + inputLang +"\",\"" + outputLang + "\"),\"\")";
range.setFormulaR1C1(formula);
SpreadsheetApp.getUi().alert('© Made by LIG。下記の新規シードをご確認ください');
}
3. ①保存・②実行をクリックする
4. データアクセスを承認する
アラートが表示されるので、承認をクリックしてください。
5. アカウントを選択し、許可をする
作成した、メニューを確認
上記を実装すれば、翻訳のメニューが表示されます。
メニューアイテムの
- 日本語>English
- English>日本語
をクリックすれば、シートの内容が日→英、英→日に翻訳されます。