GoogleスプレッドシートでGAS&DeepL活用
スプレッドシートでGoogle翻訳を活用する方法を以前紹介しました。
こういうTipsを紹介すると、Google翻訳よりも
「DeepLの方が便利じゃない?」
と言う声を聞きます。
「どっちが良い?」
と言う比較に意味はなく、それぞれ個性(特徴)があり、
「どっちも凄い!」
と自分は思います。特徴については脇に置いて、今回はGoogleスプレッドシートからDeepLのAPIを呼び出す方法を紹介します。
■準備
DeepLのサービス(=API)を活用するには、DeepLのサイトにアクセスし、アカウント登録&Keyを入手する必要があります。
APIは無料アカウント登録でも使えますが、1か月に50万文字までの翻訳制限や、なぜかクレジットカードの登録が必要です。。。
気に入ったら、1ヶ月単位で支払うプロプランがお薦めです。
■作成手順
準備ができたら、スプレッドシートを作成しましょう。まずは次のようなシートを作成します。
そして、Apps Script(=スクリプトエディター)を開きます。
エディターでは次のコードを記載(or コピペ)します。
unction translateByDeepL() {
// DeepL Keyを指定
const key = "ここにKeyを入力";
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const sheet = spreadsheet.getSheetByName('シート1');
const values = sheet.getDataRange().getValues();
const lastRow = sheet.getLastRow();
// 英語から
const fromL = "en";
// 日本語へ
const toL = "ja";
const results = [];
// 見出しを除いて、A列のデータを取得
for(let i = 1; i < values.length; i++){
const sourceColumn = values[i][0];
// 英語から日本語に翻訳
const txt = 'https://api-free.deepl.com/v2/translate?auth_key=' + key + '&text=' + encodeURIComponent(sourceColumn) + '&target_lang='+ toL +'&source_lang=' + fromL;
const response = UrlFetchApp.fetch(txt);
const json = response.getContentText();
const data = JSON.parse(json);
const exportColumn = data.translations[0].text;
results.push([exportColumn]);
}
// B列に翻訳データを記入
sheet.getRange(2, 2, lastRow-1).setValues(results);
}
コピペした後、
const key = "ここにKeyを入力";
に取得したDeepLのキーを貼り付けたら( "と"で挟んで、;を付けることを忘れずに!)、保存します。
さて試してみましょう。例えば、
と言う文章を用意し、上述のコードを実行すると、初回は
と権限確認が表示されるので、承認をします。すると、
と翻訳されます。以前紹介したGoogle翻訳では、「桃太郎の仲間が〜」でちょっと違いが出ます。
■コード解説
コーディングの内容は、以前紹介したGoogle翻訳APIの時と処理の流れは一緒です(実際コピペしました)。大きく違うのはAPIの読み出し方です。
Google翻訳のAPIは、
・LanguageApp.translate(〜, "en", "ja")
で、ほぼ済みますが、
DeepLのAPIを使いデータを加工するにはどうしても数ステップ必要です。
const txt = 'https://api-free.deepl.com/v2/translate?auth_key=' + key + '&text=' + encodeURIComponent(sourceColumn) + '&target_lang='+ toL +'&source_lang=' + fromL;
const response = UrlFetchApp.fetch(txt);
const json = response.getContentText();
const data = JSON.parse(json);
また、いろいろな英文を試したところ時々エラーが出て、調べてみたら、記号の処理でこけることが判明しました。上述の文章だと、 ””(←ダブルクオテーションマーク)の処理が引っかかり、
encodeURIComponent(〜)
と、エンコード処理も含めてます。
なお、DeepLはGoogle翻訳に比べると対応言語は少ないです。主要言語は網羅しているのであまり支障はないと思うけど念の為。
さいごに
Google翻訳、DeepL翻訳、並べて使うのも良いです。
DeepLのAPI活用をネットで調べるとPythonやCurlなどが多く、GAS利用は乏しいので、自分が試した内容を備忘録として書きました(色々試してるとDeepLの方が自分好みの翻訳をする)。この記事が少しでも参考になると嬉しいです。
この記事が気に入ったらサポートをしてみませんか?