見出し画像

【初心者向け・コピペOK】GASとGoogleスプレッドシートで複数言語に翻訳する機能を実装する

どうも、音猫。です
note初投稿になりますね
今回はタイトルの通り「GASとGoogleスプレッドシートで翻訳機能を作る」記事です!

さて、GAS(Google Apps Script)には

LanguageApp.translate(text,'翻訳前の言語(省略可)','翻訳後の言語')
//翻訳前の言語を空白にした場合、自動で言語を検出してくれます

という感じで翻訳ができる関数が存在します(さすがGoogle)
(言語コードはコチラを参考にしてください)
今回はこれを使って簡単で素早く作れる翻訳機能を紹介します!

必要なもの

  1. 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を作成しました!是非ご利用ください!

LINEで使える翻訳Botの友だち追加ページ

いいなと思ったら応援しよう!