背景
英語話者と同時にスプレッドシートを編集する必要があった際に、それぞれの言語で表示・編集できるといいなーと考えて実装してみました。
実装
スプレッドシートのツールというタブから、スクリプトエディタを開いて以下のコードを書き込みます。それだけです。
スクリプトエディタの使い方など、詳細については参考にしたリンクを貼っておきます。
- スプレッドシートで文字を翻訳するGOOGLETRANSLATE 関数より便利なGoogle Apps Script【GASで自動翻訳】
- Google Apps Scriptでシート全体を自動で翻訳する
- Google Apps Script 実践メモ - onEdit()で複数セルを編集された場合の処理
上記のページと異なるのは、1シート分を翻訳することを目的として、日本語と英語のシートをそれぞれ分けて準備したところです。書き込んだタイミングで翻訳されます。
コード
// onEdit()は編集されたことをトリガーとする関数
function onEdit(){
// シートの取得
var sheet_ja = SpreadsheetApp.getActive().getSheetByName('日本語のシート名');
var sheet_en = SpreadsheetApp.getActive().getSheetByName('英語のシート名');
// アクティブなセルを取得
var cell = sheet.getActiveCell();
var column = cell.getColumn();
var row = cell.getRow();
var val = cell.getValue();
// 日→英
var set = LanguageApp.translate(val, "ja", "en");
sheet_en.getRange(row, column).setValue(set);
// 英→日
var set2 = LanguageApp.translate(val, "en", "ja");
sheet_ja.getRange(row, column).setValue(set2);
}
注意点
- 編集をトリガーとして翻訳が実行されるため、日→英→日のような翻訳が行われることもあり、変な翻訳が表示されることがかなりの頻度であります。
- そのため、実用性という点では少し課題が残ります。
- その場合の対策として、日本語のシートであっても適切な英語で表記すると上手く翻訳されることがあります。
- また、複数行コピーやカットにも対応していないため、都度両方のシートを編集する必要があります。