
【初心者向け・コピペOK】GASとGoogleスプレッドシートで複数言語に翻訳する機能を実装する
どうも、音猫。です
note初投稿になりますね
今回はタイトルの通り「GASとGoogleスプレッドシートで翻訳機能を作る」記事です!
さて、GAS(Google Apps Script)には
LanguageApp.translate(text,'翻訳前の言語(省略可)','翻訳後の言語')
//翻訳前の言語を空白にした場合、自動で言語を検出してくれます
という感じで翻訳ができる関数が存在します(さすがGoogle)
(言語コードはコチラを参考にしてください)
今回はこれを使って簡単で素早く作れる翻訳機能を紹介します!
必要なもの
Googleアカウント
だけです(タブンネ)
では実際作っていきましょう!
手順
※使用機種がChromebookなのでスクショがChrome環境のものです
まずGoogleスプレッドシートを開き新しいシートを作成してください(空白)
その後、「拡張機能」から「Apps Script」を選択してください

するとこの画面になると思います
(ならない場合はまずアカウントの登録とか必要でしたっけ(忘れた))

この画面になったら、下のコードをコピペして上書きしてください(元のコードが残らないように)
function Translate() {
//ここより上には書かない
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('シート1');
//参考(言語コード): https://cloud.google.com/translate/docs/languages
// 翻訳するテキストを入力したいセルを指定('A1'のように)
var range = sheet.getRange('ここに翻訳するテキストを入力したいセル');
// セルのテキストを取得
var value = range.getValue();
//翻訳するテキスト
let text = value
//translate関数で英語に訳す
let transEn = LanguageApp.translate(text,'','en');
sheet.getRange("翻訳したテキストを表示させたいセル").setValue(transEn);
//translate関数で日本語に訳す
let transJa = LanguageApp.translate(text,'','ja');
sheet.getRange("翻訳したテキストを表示させたいセル").setValue(transJa);
//もっと翻訳する言語を追加したい場合は下のサンプルコードを参考にこの下に増やす
//ここから下には書かない
}
//サンプルコード
//参考(言語コード): https://cloud.google.com/translate/docs/languages
let 関数名 = LanguageApp.translate(text,'','言語コード');
sheet.getRange("翻訳したテキストを表示させたいセル").setValue(関数名);
上のコードのセルを入力するときは自分の好きな場所指定でいいです
セルを書き込むときは''の中に書き込んでください(例: 'A1')
( ただし、それぞれのセルの場所、関数名に被りがないように)
シート名を変えた場合は上のコードの('シート1')を('新しいシート名')というような感じにしてくれれば動くと思います
コピペして必要事項を入力したあと「実行」ボタンを押してみてください
下のような表示が出てくるので
「権限を確認」→アカウントを選択で自分のアカウントを選択→安全ではありませんとか出るけど大丈夫なので左下の「詳細」を選択→押したら出てくる左下の「(安全ではないページ)へ移動」を押す→一番下の「許可」を選択




これで基本は出来上がりました
しかし、このままではスプレッドシートで入力した文章を翻訳するために、いちいちGASを開いて「実行」ボタンを押さなければなりません(メンドクセッ)
そこで、スプレッドシート上で「実行」ボタンの代わりになるものを作りましょう
おっと、身構えないでください
そんなに難しくないですからw
「挿入」から「図形描画」を選択して、

テキトーに図形を選んで(ここで文字を入れて装飾していますが関係ありません)から「保存して終了」して、

出できた図形の右上の3つの点(伝われ)をクリックして「スクリプトを割り当て」を選択、「Translate」(大文字と小文字を正確に入力!)と入力して確定


以上で完成となります!お疲れさまでした〜
使い方は、
指定したセルにテキストを入力→図形を押す→翻訳されたテキストが帰ってくる

//私が書いたコード
function Translate() {
//ここより上には書かない
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('シート1');
//参考(言語コード): https://cloud.google.com/translate/docs/languages
// 翻訳するテキストを入力したいセルを指定('A1'のように)
var range = sheet.getRange('A1');
// セルのテキストを取得
var value = range.getValue();
//翻訳するテキスト
let text = value
//translate関数で日本語に訳す
let transEn = LanguageApp.translate(text,'','en');
sheet.getRange("B1").setValue(transEn);
//translate関数で日本語に訳す
let transJa = LanguageApp.translate(text,'','ja');
sheet.getRange("C1").setValue(transJa);
//もっと翻訳する言語を追加したい場合は下のサンプルコードを参考にこの下に増やす
//ここから下には書かない
}
(コメント無しver)
function Translate() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('シート1');
var range = sheet.getRange('A1');
var value = range.getValue();
let text = value
let transEn = LanguageApp.translate(text,'','en');
sheet.getRange("B1").setValue(transEn);
let transJa = LanguageApp.translate(text,'','ja');
sheet.getRange("C1").setValue(transJa);
}
といった感じです!サンプルコードを追加していって言語数を増やすと便利かもしれませんw
紹介
このtranslate関数を活用したLINEで使える翻訳Botを作成しました!是非ご利用ください!
