Google スプレッドシートには GOOGLETRANSLATE 関数が用意されており簡単にセルの内容を翻訳することができる。
Google スプレッドシート内で Google 翻訳を利用する | Lonely Mobilerしかし Google 翻訳の精度は DeepL には及ばないとの評価もあり、Google 翻訳ではなく DeepL 翻訳を利用したい場合もある。幸いにも DeepL は API を公開しており、Google Apps Script からも利用可能だ。
このページでは Google Apps Script で DeepL API を利用する方法を紹介しよう。
Google Apps Script で DeepL 翻訳を利用する方法
まずは DeepL のページより会員登録を行い、DeepL の API キーを入手しよう。
DeepL Translate API | Machine Translation Technology無料プランでも API は利用できる。
DeepL の API キーを入手できたら Google Apps Script でスクリプトを記述しよう。
function deepl_translate(text, source_lang, target_lang) {
const url = "https://api-free.deepl.com/v2/translate" // フリープランの場合
let options = {
'method' : 'post',
'headers' : {
'Authorization' : 'DeepL-Auth-Key YOUR_AUTH_KEY'
},
'payload' : {
'text' : text,
'source_lang' : source_lang, // 省略した場合は自動認識
'target_lang' : target_lang
}
}
try {
return JSON.parse(UrlFetchApp.fetch(url, options).getContentText())
} catch (e) {
Logger.log(e)
return false
}
}
function translateTest() {
result = deepl_translate('hello', 'en', 'ja')
Logger.info(result)
Logger.info(result.translations[0].text)
}
DeepL API を利用する際には Authorization ヘッダーに API キーを入力する必要がある。また、API のエンドポイントは無料版と有料版で URL が異なる点に注意が必要だ。自分は現時点では無料版のため、api-free.deepl.com を指定している。
単にテキストを翻訳するだけなら /v2/translate に対して text, source_lang, target_lang を post で渡してやれば良い。言語は'en' や 'ja' のような2文字のコードとなる。HTTPアクセスするには Google Apps Script の場合は UrlFetchApp.fetch を利用するのが楽だ。
API の返り値は JSON で返ってくるので、JSON.parse で読み込む。
上記スクリプトを実行すると以下のようにログに結果が出力される。
Google スプレッドシートで DeepL 翻訳を利用する方法
Google スプレッドシートから利用する場合には、以下のように関数を定義してやる。
/**
* DeepLTranslate
* @customfunction
*/
function DEEPLTRANSLATE(text, source, target) {
result = deepl_translate(text, source, target)
return result.translations[0].text
}
このように DEEPLTRANSLATE 関数を定義してやると、Google スプレッドシートから =DEEPLTRANSLATE('hello', 'en', 'ja') のように呼び出すことができる。
とても簡単。
とはいえ DeepL API の無料版には上限があり頻繁に利用するなら課金が必要だ。一方で GOOGLETRANSLATE 関数は無料で利用できるので、上手く使い分けていきたいところだ。
なお Ruby で利用する場合は以下の記事を参照してほしい。
DeepL API を Ruby で利用し翻訳する方法 | Lonely Mobiler