見出し画像

【GAS】Google Apps Script 活用事例 Google Slides全ページを、一瞬で英語訳する。

僕は普段、フィリピン出身の海外スタッフが多い職場で働いています。ただし、受け入れ側の我々、日本人が英語を喋れるかというと、そうではありません。最近はポケトークを使って、スタッフとコミュニケーションを図る社員がいますが、いかんせん、英語力が足りないっていうのは、どうしても業務に支障が出てしまいます。

残念ながら、こういう職場では、英語が出来る人に業務が集中します。社員以上に英語が出来るパートさんが、英訳をするのが業務内容とはいえ、英訳する「量」がエグい....と、ため息混じりに話しているのを聞いて、

今の俺だったら、英訳するスクリプト書けるんじゃね?

Google Slideのテキストを取得して、LanguageAppで英訳出来ないかなと思いました。

(今は、Google翻訳の精度がとても上がってきていて、英語が出来る人でも一度、Google翻訳に日本語を打ち込んで、翻訳が至らない部分を手直しで修正するような仕事スタイルをしている人が多いです。)

なので、Google翻訳で荒削りでも翻訳を自動で行ってくれると業務効率化が期待できます!!実行するとこんな感じになります。今回は記憶に残るプレゼンテーションの作り方を英訳してみました。(開いたら一番はじめに出てくるヤツです。)

スクリーンショット 2020-01-21 22.51.42

スクリーンショット 2020-01-21 22.51.22

スクリーンショット 2020-01-21 23.12.58

スクリーンショット 2020-01-21 23.11.26

onOpenという関数をを実行すると、ヘルプの横に、今までなかった翻訳機能という項目が現れます。そこから、日本語を英語に翻訳するをクリックすると、一瞬で英訳されます。社内で、70ページ近いスライド資料があったので試してみたところ、30秒足らずで、全ページの翻訳が完了しました。ゴイスー!!流石、量子コンピューターを作り上げてしまった会社。やる事がパネェっス。

スクリプトの承認は、こんな感じ


画面上の ツール  > スクリプトエディタの順に進みます。

スクリーンショット_2020-01-21_22_58_30

スクリプトエディタが開いたら下記のソースコードをコピぺしてください。
onOpenを選んで、YouTubeの再生ボタンっぽいのをクリックしてください。

実行すると、Google Slidesの画面から、スクリプトを実行できるようになります。

スクリーンショット 2020-01-21 22.54.23

許可を確認をクリック

スクリーンショット_2020-01-21_22_56_27

スクリーンショット 2020-01-21 22.57.01

詳細をクリック。怪しいウイルスとかはないので、ご安心を。

スクリーンショット 2020-01-21 22.57.11

移動をクリックと進んでいきます。

完成形のソースコード

//onOpenを実行することで、スクリプトエディタを開かずスクリプトが実行できるようになります。
function onOpen() {
 SlidesApp.getUi()
 .createMenu('翻訳機能') // メニューの追加
 .addItem('日本語を英語に翻訳する', 'translateJapanseToEnglish')
 .addItem('日本語をタガログ語に翻訳する', 'translateJapanseToTagalog')
 .addItem('英語をタガログ語に翻訳する', 'translateEnglishToTagalog')
 .addItem('タガログ語を日本語に翻訳する', 'translateTagalogToJapanese')
 .addToUi();
}

function translateJapanseToEnglish(){
 //日本語から英語へ翻訳する。
 translate_('ja', 'en');
}//end


function translateJapanseToTagalog(){
 //日本語からタガログ語へ翻訳する。
 translate_('ja', 'tl');
}


function translateEnglishToTagalog(){
 //英語からタガログ語へ翻訳する。
 translate_('en', 'tl');
}


function translateTagalogToJapanese(){
 //タガログ語から日本語へ翻訳する。
 translate_('tl', 'ja');
}


function translate_(sourceLanguage, targetLanguage) {
 const presentation  = SlidesApp.getActivePresentation();
 const slides        = presentation.getSlides();
 
 /*スライドが正しく取得出来ているか確認する*/
 console.log(presentation.getName());
 console.log(slides);
 console.log('スライドの枚数: %s',slides.length);
 
 /*i がSlidesの長さ*/
 /*j getShapeの数*/
 for(let i = 0; i < slides.length; i++){
   for(let j = 0; j < slides[i].getShapes().length; j++){
     const contents = slides[i].getShapes()[j].getText().asString();
     const results  = LanguageApp.translate(contents, sourceLanguage, targetLanguage);
     
     console.log(results);
     
     slides[i].getShapes()[j].getText().setText(results);
   }//for_j
 }//for_i
}


フィリピン出身のスタッフさんは病気や怪我で病院に行った時に、タガログ語しか話せなくなる人が多いと担当者からヒアリングする機会があり、それならば.....と実装しました。

上のリンクはGoogle翻訳の対応言語のリストになります。(.....このスクリプトはGoogle Slidesの内容を繰り返し取得して、繰り返しGoogle翻訳する、翻訳し終えたものを貼り付けるみたいな感じです。なので、Google翻訳が対応している言語かが重要になってきます。)

var results  = LanguageApp.translate(contents,'tl','ja');

'tl','ja'など''で囲んだ中身を対応言語リストにある単語で囲むだけで、英語やタガログ語に限らず色々な言語に翻訳可能です。(むしろ、タガログ語がある事に驚きました。もはやGoogleは先生ではなく、神ですね)

スプレッドシート版

機能追加したものを後日、書きました。

実は、上記のスクリプトでは、スライド内で使用されている表の内部の単語や文章が英語訳されないという点がありました。バグというよりは仕様です。そこで、後日、機能追加したスクリプトを書き上げました。

それからSlidesが全て、英語だと、僕みたいなカタコトでしか英語が話せない人間は、とても困ってしまいます。そこで、翻訳前の日本語の文章を、スピーカーノートに加える処理を追加しています。

スピーカーノートは、登壇者がプレゼン中に見れるカンペみたいな機能です。

画像10

この記事が気に入ったらサポートをしてみませんか?