Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
185
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Organization

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

概要

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

  • 原文: 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を使ったアプリケーションを作って紹介できたらと思います

参考文献

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
185
Help us understand the problem. What are the problem?