314
245

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Google翻訳APIを無料で作る方法

Last updated at Posted at 2019-07-27

概要

Google翻訳APIを使いたいと思っていたところ,1~500,000文字まで無料で,これではすぐ上限を超えてしまう!!

なんとか無料で使える方法はないかと模索していたところ,3 分で作る無料の翻訳 API with Google Apps Scriptこちらの記事を見つけました.

記事では非常に簡単に説明してくださっていますが,多言語でAPIとして使うときJSON形式で返してくれたら嬉しいと思ったので,今回はこちらの記事を参考にしながらJSON形式で返すように変更を加えたいと思います.

Let's Google Apps Script

プロジェクトの作成

  • まずは,こちらのサイトにアクセスしてログインします

  • 次に,新規スクリプトを選択し,GASを記述するエディタへ移動します
    image.png

  • 赤丸を押して名前を変更を選択
    image.png

  • プロジェクト名をgoogle_translate_apiに設定し
    image.png

  • ソースファイルの名前をmainに設定しました
    image.png

  • 現状はこんな感じになっていると思います
    image.png

翻訳結果を返すAPIをつくる

エディタにデフォルトで記述されているmyFunction()を下のdoGet(e)関数に置き換えてください
image.png

main.gs
function doGet(e) {
    // リクエストパラメータを取得する
    var p = e.parameter;
    //  LanguageAppクラスを用いて翻訳を実行
    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;
}

できたらファイルを保存します.

デプロイ

上のタブから公開ウェブアプリケーションとして導入...を選択
image.png

アプリケーションにアクセス出来るユーザを全員に変更したら導入ボタンを押します
image.png

URLが表示されるので,ここにパラメータを与えてアクセスすればAPIが叩けます
image.png

APIの実行

パラメータとして,以下の3つを指定します

  1. text(翻訳したいテキスト):Hello
  2. source(もとの言語):en
  3. target(翻訳したい言語):ja

Webで実行

短いテキスト

上記のパラメータを設定した,下記のリンクにアクセスすると
https://script.google.com/macros/s/AKfycbzZtvOvf14TaMdRIYzocRcf3mktzGgXvlFvyczo/exec?text=Hello&source=en&target=ja

以下のようなレスポンスが得られます

{
  "code": 200,
  "text": "こんにちは"
}

長いテキスト

長いテキストでも...
[https://script.google.com/macros/s/AKfycbzZtvOvf14TaMdRIYzocRcf3mktzGgXvlFvyczo/exec?text="We must develop and maintain the capacity to forgive. He who is devoid of the power to forgive is devoid of the power to love. There is some good in the worst of us and some evil in the best of us. When we discover this, we are less prone to hate our enemies."&source=en&target=ja](https://script.google.com/macros/s/AKfycbzZtvOvf14TaMdRIYzocRcf3mktzGgXvlFvyczo/exec?text="We must develop and maintain the capacity to forgive. He who is devoid of the power to forgive is devoid of the power to love. There is some good in the worst of us and some evil in the best of us. When we discover this, we are less prone to hate our enemies."&source=en&target=ja)

  • 原文:
    We must develop and maintain the capacity to forgive. He who is devoid of the power to forgive is devoid of the power to love. There is some good in the worst of us and some evil in the best of us. When we discover this, we are less prone to hate our enemies.

このようなレスポンスが得られます

{
  "code": 200,
  "text": "「私たちは許す能力を発達させ、維持しなければなりません。許す力を持たない彼は、愛する力を欠いています。私たちの最悪のところに善があり、私たちのうちの最善に悪があります。 、私たちは敵を憎む傾向が少ない」"
}

curlで実行

curlではオプション"-L"をつけてリダイレクトに対応させています

$ curl -L "https://script.google.com/macros/s/AKfycbzZtvOvf14TaMdRIYzocRcf3mktzGgXvlFvyczo/exec?text=Hello&source=en&target=ja"

> {"code":200,"text":"こんにちは"}

Webで実行したときと同じ結果が返ってきます

感想

翻訳結果をJSON形式でもらえるようになりました.
しかし,長文になるとURLが長くなってしまうので,リクエストボディを使うほうが良いのかもしれません.

今後はこのAPIを使ったアプリケーションを作って紹介できたらと思います

参考文献

314
245
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
314
245

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?