概要
Google翻訳APIを使いたいと思っていたところ,1~500,000文字まで無料で,これではすぐ上限を超えてしまう!!
なんとか無料で使える方法はないかと模索していたところ,3 分で作る無料の翻訳 API with Google Apps Scriptこちらの記事を見つけました.
記事では非常に簡単に説明してくださっていますが,多言語でAPIとして使うときJSON形式で返してくれたら嬉しいと思ったので,今回はこちらの記事を参考にしながらJSON形式で返すように変更を加えたいと思います.
Let's Google Apps Script
プロジェクトの作成
-
まずは,こちらのサイトにアクセスしてログインします
翻訳結果を返すAPIをつくる
エディタにデフォルトで記述されているmyFunction()
を下のdoGet(e)
関数に置き換えてください
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;
}
できたらファイルを保存します.
デプロイ
上のタブから公開
→ウェブアプリケーションとして導入...
を選択
アプリケーションにアクセス出来るユーザを全員
に変更したら導入
ボタンを押します
URLが表示されるので,ここにパラメータを与えてアクセスすればAPIが叩けます
APIの実行
パラメータとして,以下の3つを指定します
- text(翻訳したいテキスト):Hello
- source(もとの言語):en
- 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を使ったアプリケーションを作って紹介できたらと思います