Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

概要

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

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

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

Let's Google Apps Script

プロジェクトの作成

https://script.google.com

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

  • 次に,新規スクリプトを選択し,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を使ったアプリケーションを作って紹介できたらと思います

参考文献

satto_sann
触っている技術:Python, React, Ruby, Go, Docker, k8s, SDN(Trema, Faucet) OSS: FastAPI Contributor
zozotech
70億人のファッションを技術の力で変えていく
https://tech.zozo.com/
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした