LoginSignup
15
13

More than 1 year has passed since last update.

【GoogleAppsScript】GASでDeepL APIを叩く

Last updated at Posted at 2021-09-11

目的

GOOGLETRANSLATE関数およびLanguageApp.translate()が吐き出すテキストがいまいちなので、GASでもDeepL翻訳を使いたい。

事前準備

  1. DeepL Free APIプランのアカウント(無料)を作成 有料プランに移行しなければ課金はされないが、アカウント作成時にクレジットカード情報の入力を求められる。 ちょっとアレだと思う。

  1. アカウントページでAPI用認証キーを発行しておく qiita.png

GAS

deepl.gs
const API_KEY = '<あなたのAPI認証キー>';
const API_URL = 'https://api-free.deepl.com/v2/translate';

const FETCH_WAIT = 200;

// DeepL翻訳関数
function deepltranslate(text, src, tgt) {

  let t = text.toString();

  let url = API_URL;

  let content = encodeURI('auth_key=' + API_KEY + '&text=' + t + '&source_lang='+src+'&target_lang='+tgt);

  const postheader = {
    "accept":"gzip, */*",
    "timeout":"20000",
    "Content-Type":"application/x-www-form-urlencoded"
  }  

  const parameters = {
    "method": "post",
    "headers": postheader,
    'payload': content
  }

  // スプレッドシートから大量に呼ばれる可能性があるのでウェイトを入れておく
  Utilities.sleep(FETCH_WAIT);

  try {
    var response = UrlFetchApp.fetch(url, parameters);
  }
  catch (e) {
    Logger.log(e.toString());
    return 'DeepL:Exception';
  }

  let response_code = response.getResponseCode().toString();

  Logger.log(response_code + ':' + url);

  if (response_code != 200) return 'DeepL:HTTP Error(' + response_code + ')'

  // JSONからテキストを取り出す
  let json = JSON.parse(response.getContentText('UTF-8'));
  return json.translations[0].text;

}

// 
function deepltranslateje(text) {
  return deepltranslate(text, 'ja', 'en');
}

function deepltranslateej(text) {
  return deepltranslate(text, 'en', 'ja');
}

Googleスプレッドシート上では、以下のように言語を指定する。 =deepltranslate(A2, "ja", "en")

備考

出力

原文 DeepL Google
So today, we are going to talk about one of the questions I've been getting the most recently is there anything that can happen for bitcoin right now that would change my bullish mindset. そこで今日は、私が最近よく受ける質問のひとつ、「今、ビットコインに何か起こって、私の強気の考え方が変わることはありますか」についてお話しします。 だから今日、私は最近入ってきた質問の1つについて話すつもりです。
Guys, this is an important video we're talking about bitcoin ethereum and cardano and guys, if you did not know I actually have channels in arabic, I have it in italian and also in hindi. このビデオは、ビットコイン、イーサリアム、カルダノについての重要なビデオです。 みんな、これは私たちがBitcoin EthereumとCardanoとGuysについて話している重要なビデオです。
We're doing weekly giveaways on this channel so make sure to check them out if you're speaking these languages. このチャンネルでは毎週プレゼントを行っていますので、これらの言語を話す人はぜひチェックしてみてください。 私たちはこのチャンネルで毎週の贈り物をしていますので、これらの言語を話している場合は必ずそれらをチェックアウトしてください。
15
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
13