概要
以前作成したルー大柴BotをPowerAutomateDesktopで作ってみる。
※今回はBotではなく、入力した文章を翻訳して出力するまでの練習
【GAS】GASとCOTOHA APIでルー大柴Botをトゥギャザーする
- PowerAutomateDesktop Preview(無料アカウント)
- COTOHA API
- Google翻訳
動作
フローを実行するとInputダイアログが表示される。
ここに翻訳してもらいたい日本語の文章を入力する。
するとこんな感じで、程よく(?)英語翻訳された文章が出力される。
翻訳にはGoogle翻訳を使用している。
ちなみに普通に翻訳すると結果はこうなる。
中身
開始処理
まずは 入力ダイアログを表示 のアクションで文章を入力してもらう。
入力値が空白でなかった場合は処理を開始する。
COTOHA API で構文解析後のjsonを受け取る
次にCOTOHA APIのトークンの取得と、インプットされた文章の形態素解析を行う。
COTOHAの処理に関してはサブフローにまとめている。
内容については割愛するが、Web サービスを呼び出します のアクションでいける。
確認ポイント
-
サブフローと変数のスコープ
当初、元になる文字列を引数として渡し、解析結果のjsonを戻り値として受け取るイメージで
サブフローに切り分けたが、どうやらサブフローにはそのような仕組みはなさそう (未調査)
変数はすべてパブリックスコープになっているっぽい。
とはいえ、個人的にはRPAツールの仕組み上スコープを細かく分けると
あとから全体を確認するのが大変だと感じている。
UiPathでフローを作る時も変数スコープは大きな箱と小さな箱の2段程度にしている。
構文解析結果をパースする
レスポンスのjsonをカスタムオブジェクトに変換し、
result 内の tokes 内の form と pos の値をそれぞれのリストに格納していく。
確認ポイント
-
リスト
二次元配列の使い方を見つけられなかったので、個別のリストを作成した。
-
オブジェクト内要素のカウント
カウント方法についてはZero Sys(@sys_zero )さんの記事を参考にさせていただいた。
Power Automate Desktop「俺のデスクトップはきたない」を何とかする
オブジェクト要素に対してcount関数を指定することが出来た。
%JsonAsCustomObject2['result'].count%
Google翻訳を使用してガチャガチャする
最後にChromeからGoogle翻訳のページを開き、
WordListの値をHinshiListの独自ルールに基づいて翻訳し結合する。
詳細は割愛する。
確認ポイント
-
翻訳
現在のPADにはIBMの 翻訳 のみがある。
これはWebAPI経由で使用するIBMのサービスのようなので今回は使用しなかった。
GASの場合はGoogle翻訳が直接使用できて便利だったので、PADにもカジュアルな翻訳アクションが欲しくなる。 -
Webレコーダー
Google翻訳のページはWebレコーダーで取得した。
検索結果表示のテキストボックスは上位のdivタグが取得されていて、それだけでも十分だったが
検索結果によっては余計なテキストが含まれてしまうことがあったので、セレクタービルダーから厳密に調整した。※ディスプレイがメイン4kでサブFHDの環境のせいか、サブ側ではWebレコーダーがうまく機能しなかった。(これは仕方がないと思う)
所感
という感じで、実際なんの意味もない機能ですが、
PADの練習には申し分ない題材となりました。
なぜPADをUseのか。ThereにPADがIs Thereからだ。