Google Apps Script の LanguageApp を用いて簡易翻訳を作成し、Python から呼び出す方法

Google Apps Script の LanguageApp を用いて簡易翻訳を作成し、Python から呼び出す方法について記載します。

 

LanguageApp はあまり難しい翻訳はできない印象ですが、簡単な単語の翻訳であれば問題ないのかなと思っています。

この記事で紹介する処理の概要としては、次の通りです。

1.翻訳したい文字列を Python から送信

2.Google Apps Script で翻訳して、翻訳結果をJson で返す。

3.Python で翻訳結果を受け取る

Google Apps Script での処理を記載してから、Python での処理の順でコードを紹介します。

Google Apps Script の LanguageApp と返却するコード

Google Apps Script は、Javascript ベースで書けますので取っ掛かりやすいです。

Google Apps Script の詳しい説明は、以下を見てもらえばと思います。

外部リンク:Google Apps Scriptはプログラム言語初心者でも学べるのか?

簡単に実行も試せるし、プログラミング練習にはいいかもしれません。

コード

処理概要の2の処理になります。

各行の説明は、コード上のコメントを参照してください。

難しいことはしていないです。シンプルな処理になります。

function doPost(element) {
  // パラメータ取得
  var p = JSON.parse(element.postData.getDataAsString());

  // ※1 翻訳処理
  var translatedText = LanguageApp.translate(p.text, p.source, p.target);

  // 以下は返却するための処理
  // レスポンスボディの作成
  var body;
  if (translatedText) {
    body = {
      code: 200,
      text: translatedText
    };
  } else {
    body = {
      code: 400,
      text: "Bad Request"
    };
  }
  // レスポンスの作成
  var response = ContentService.createTextOutput();
  // Mime TypeをJSONに設定
  response.setMimeType(ContentService.MimeType.JSON);
  // JSONテキストをセットする
  response.setContent(JSON.stringify(body));

  return response;
}

翻訳は1行で、他は返却するための処理です。

※1 翻訳処理

以下の引数の順は、翻訳したい文字、翻訳前の言語、翻訳後の言語となります。

LanguageApp.translate(p.text, p.source, p.target);

 

Python 側の処理を見てもらえばわかると思いますが、以下のように指定しています。

source :’ja’

target:’en’

他の言語の場合は、これらを変更します。

Google Apps Script 保存時の注意点

何らかの変更をした場合は、VersionをNewにして更新しないと反映されないので注意が必要です。

ファイル → 版の管理 → Save New Version

で、新しい Version になったことを確認!

 

新しい Version で保存できていないとひたすら古い Version を呼び出すことになります。

Python から GAS 呼び出しと結果取得

Python では、処理概要の1と3を記載します。

関数として用意して、ほかの処理から呼び出すことを目的にしています。

大きい処理の流れの中の1機能なので、エラーチェックなどを細かくしています。

コード

何をしているかは、コード内のコメントでわかるようには記載しています。

#!/usr/bin/env python
# coding: utf_8

import requests
import json

class GasCall:
    # ※1 デフォルトは日本語、英語
    def translate_str(self, source_str, source_language='ja', target_language='en'):
        converted_string= ''
        try:
            # Gas の呼出し URL
            url = 'https://script.google.com/macros/s/xxxxxxxxxxxxx/xxxx'
            obj = {
                'text': source_str,
                'source': source_language,
                'target': target_language
            }
            headers = {
                'Content-Type': 'application/json',
            }
            # Gas 実行
            response = requests.post(url, data=json.dumps(obj), headers=headers)
            if(response.status_code == 200):
                # ※2 json で返ってくる
                converted_string = response.json()['text']
            else:
                print('ERROR: GasCall.translate_str: GAS 404')
        except Exception as e:
            print('ERROR: GasCall.translate_str: GAS error')
            print(e.args)
        finally:
            # 何らかのエラーがあった場合は、空文字のまま返す
            return converted_string

 

※1 デフォルトは日本語、英語

呼出しの際は、基本的には、翻訳した文字列だけを渡します。

翻訳の言語が異なる場合は、第2引数と第3引数の言語を変えて使う想定です。

 

呼出し例:

translate_str(‘関東’)

translate_str(‘関東’, ‘jp’, ‘en’)

translate_str(‘United States of America’, ‘en’, ‘jp’)

※2 json で返ってくる

Gas のコードでもわかるように、Json で返しているので、Python は Json として受け取ります。

Python の受け取り結果は、次のようになります。

‘関東’, ‘jp’, ‘en’ → {u’text’: u’Kanto’, u’code’: 200}

※u は、unicode の意味

 

まとめ

Google Apps Script と Python での処理を記載しました。

あまり複雑は翻訳結果は期待できませんが、使い道によっては非常に使いやすい処理だと思います。

 

Google Apps Script は、使い道によっては非常に便利なので、うまく使っていきたいです。

 

 


読んで頂き、ありがとうございます。
この記事が誰かにとって、一つの参考となれば幸いです。

新たな知識や技術を習得し続けていきたいです。

 

 

 

コメント