Edited at

Microsoft Translator API v3をGoogle Apps Script から使う方法

More than 1 year has passed since last update.


概要

Microsoft Translator API v2が2019年4月にCloseされ、v3に移行する必要があるようです。

いままでGASで動いていたv2のSlack翻訳botをv3にしたので、そのコードを晒しておきます。


関連記事

v1: https://qiita.com/kemayako/items/21fe36005e6e729aff77

v2(GAS): https://qiita.com/sosuke/items/ece4aee023fade0c2d23


ソースコード

https://docs.microsoft.com/en-us/azure/cognitive-services/translator/migrate-to-v3 に従い、認証方法やレスポンスの構造(xml→json)をv2実装から変更しています。

↓の記事の内容から translate() の実装を以下のものと置き換えれば、そのまま動作するはずです。

https://qiita.com/sosuke/items/ece4aee023fade0c2d23


var MS_API_TOKEN="";
var PRIMARY_LANGUAGE="ja";
var SECONDARY_LANGUAGE="ko";

function translate_v3(text) {
var detect_url = "https://api.cognitive.microsofttranslator.com/detect?api-version=3.0";
var options = {
"method": "post",
"headers": {
"Content-Type": "application/json",
"Ocp-Apim-Subscription-Key": MS_API_TOKEN
},
};
options["payload"] = JSON.stringify([{"text":text}]);
var detect_resp_raw = UrlFetchApp.fetch(detect_url, options).getContentText("UTF-8");
var detect_resp = JSON.parse(detect_resp_raw);
var language = detect_resp[0]["language"];

var from = language;
var to = PRIMARY_LANGUAGE;
if (language.indexOf(PRIMARY_LANGUAGE) >= 0) {
to = SECONDARY_LANGUAGE;
}

var translate_url = 'https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&To='+to;
options["payload"] = JSON.stringify([{"text":text}]);
var translate_resp_raw = UrlFetchApp.fetch(translate_url, options).getContentText();
var translate_resp = JSON.parse(translate_resp_raw);
return translate_resp[0]["translations"][0]["text"];

}


Microsoft Translator API v3の所感

Microsoft Translator API v3に関するQiita記事はまだ無いようなので、多少所感を書いておきます。

v2からv3に上げたことで、翻訳の内容が変わり、

やや韓→日、日→韓の翻訳精度が上がったように思います。

例えば、


네, 알겠습니다.


という文は、v2の翻訳だと


私の、サー。


などという、「同音異義語間違え」「英語等の他の言語を経由した形跡」が見られましたが、

v3では、


はい、わかりました。


と正確に訳されるようになりました。

その他、丁寧語の訳も正確に出るようになった気がします。