Power Automate for desktop からの DeepL API 使用方法

#はじめに
この記事では、Power Automate for desktop (PAD) から、DeepL API を使用して翻訳の自動化を行うためのサンプルを記載しています。

Web API アドベントカレンダー 19 日目の記事です。

https://qiita.com/advent-calendar/2021/webapi

#DeepL API を利用するには

DeepL API には、無料の DeepL API Free プランがあります。
DeepL API Free プランの説明や DeepL API Free プランの利用を開始するには以下の記事の "DeepL API の利用方法" をご確認ください。

https://qiita.com/maekawawawa/items/3f58cc62c09772f1e357#deepl-api-%E3%81%AE%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95

#Power Automate for desktop からの DeepL API 使用方法

##フローの全体像
Power Automate for desktop では、"Web サービスを呼び出します" アクション (Invoke Web Service) を使用して、Web API を使用することができます。
"Web サービスを呼び出します" アクションを使って、DeepL API を利用する方法を記載します。

今回作成するフローの全体像は以下の通りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/f70173fc-b5e1-2bca-1636-4e8ffa1af012.png)



各アクションを見ていきます。
###1. "入力ダイアログ"の表示アクションの設定
翻訳する文字を入力するメッセージボックスを表示します。

メッセージボックスに入力された文字は、生成された変数に設定されますので、この変数名を %TranslateWord% という名前に設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/3134654c-68d0-9a4b-0be9-ce99b81f47d0.png)


###2. "Web サービスを呼び出します" アクションの設定
DeepL API を実行するために "Web サービスを呼び出します" アクション必要な設定を入力します。

このアクションで、重要なポイントは、要求本文の項目に以下の内容を文字列連結します。
・auth_key には、DeepL のAPI 認証キーを設定します。
・text には、メッセージボックスで入力した文字列が入った変数  %TranslateWord% を設定します
・target_lang には、今回は日本語への変換なので JA を指定します。

上記を踏まえた各パラメータの設定は以下の通りです。

| プロパティ| パラメータ |
|:-----------|------------|
| URI| https://api-free.deepl.com/v2/translate      | 
| メソッド| POST        | 
| 受け入れる| application/json | 
| コンテンツタイプ |  application/x-www-form-urlencoded|
| 要求本文| auth_key="DeepL の API キー"&text=%TranslateWord%&target_lang=JA| 
| 要求本文をエンコードします| オフ       | 

設定後のイメージ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/7ef93210-95fa-11e2-6372-6618b57d22ed.png)

返却される値については、[生成された変数] の "Web サービスの応答テキスト" に設定されますので、この変数名を %DeepLResponse% という名前に設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/3f5d03cc-e79c-391c-2c05-872c53de1594.png)


###3. "JSON をカスタムオブジェクトに変換" アクションの設定
DeepL API から変換される値は以下のような JSON 形式の文字列です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/a86d6c19-cae7-e813-6d11-cdc3c30d87d5.png)

この文字列を PAD 上で扱いやすくするために "JSON をカスタムオブジェクトに変換" アクションで、変換します。
API の実行結果が格納されている %DeepLResponse% を %DeepLCustomObject% という変数に変換します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/b24c445e-ec01-03c0-f25a-ae4199395706.png)

変換されたカスタムオブジェクトの内容は以下の通りの構造のデータとして確認することができるようになります。見やすい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/9bf28fdf-0004-f7e4-a280-e4f3c78562ff.png)

###4. "メッセージを表示" アクションの設定
最後に翻訳された文字をメッセージボックスに表示します。
%DeepLCustomObject% は、上記の通り、カスタムオブジェクトに格納されているので、カスタムオブジェクトの構造にアクセスし、値を取得します。

どんな構造かわからないという場合は、DeepL API の応答の仕様やフローデザイナーのフロー変数からカスタム オブジェクトの変数を表示し、詳細表示をクリックすることで、アクセスする構造を確認することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/2d75472f-62e0-b073-d21f-8ad098ea66c1.png)



上記で確認した構造の結果(%DeepLCustomObject['translations'][0]['text']%)を表示するメッセージに設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/f484d056-a943-c52b-bb2e-874d76253075.png)



###実行結果
文字が欠けて表示されていますが、以下のようにメッセージボックスに入力した文字列が翻訳されて表示されます。

<翻訳前>
Power Automate for desktop broadens the existing robotic process automation (RPA) capabilities in Power Automate and enables you to automate all repetitive desktop processes. 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/fd7baae3-1b9a-0706-48aa-0c8192787cbc.png)
↓
<翻訳後>
Power Automate for desktopは、Power Automateの既存のRPA（ロボティック・プロセス・オートメーション）機能を拡張し、反復的なデスクトッププロセスをすべて自動化することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/1bcc4886-a8e6-df64-ab87-2d7485ee3d0a.png)


#おわりに
DeepL API は、開発者用の Free プランもあり、とても試しやすいです。
また、リクエストも応答もシンプルで、私のような API 初心者でも簡単に使用することができました。
今回は、文字入力したもの翻訳する処理を行いましたが、Excel などのドキュメントに入力された文字列を翻訳するなど様々な用途があると思います。