LoginSignup
2
1

More than 3 years have passed since last update.

【PAD】PADとCOTOHA APIでルー大柴翻訳をトゥギャザーする

Posted at

概要

以前作成したルー大柴BotをPowerAutomateDesktopで作ってみる。
※今回はBotではなく、入力した文章を翻訳して出力するまでの練習

【GAS】GASとCOTOHA APIでルー大柴Botをトゥギャザーする

動作

フローを実行するとInputダイアログが表示される。
ここに翻訳してもらいたい日本語の文章を入力する。

input.png

するとこんな感じで、程よく(?)英語翻訳された文章が出力される。

output.png

翻訳にはGoogle翻訳を使用している。
ちなみに普通に翻訳すると結果はこうなる。

デフォの翻訳.png

中身

開始処理

まずは 入力ダイアログを表示 のアクションで文章を入力してもらう。
入力値が空白でなかった場合は処理を開始する。

フロー1.png

COTOHA API で構文解析後のjsonを受け取る

次にCOTOHA APIのトークンの取得と、インプットされた文章の形態素解析を行う。
COTOHAの処理に関してはサブフローにまとめている。
内容については割愛するが、Web サービスを呼び出します のアクションでいける。

フロー2.png

確認ポイント

  • サブフローと変数のスコープ

    当初、元になる文字列を引数として渡し、解析結果のjsonを戻り値として受け取るイメージで
    サブフローに切り分けたが、どうやらサブフローにはそのような仕組みはなさそう (未調査)
    変数はすべてパブリックスコープになっているっぽい。
    とはいえ、個人的にはRPAツールの仕組み上スコープを細かく分けると
    あとから全体を確認するのが大変だと感じている。
    UiPathでフローを作る時も変数スコープは大きな箱と小さな箱の2段程度にしている。

構文解析結果をパースする

レスポンスのjsonをカスタムオブジェクトに変換し、
result 内の tokes 内の form と pos の値をそれぞれのリストに格納していく。

フロー3.png

確認ポイント

  • リスト

    二次元配列の使い方を見つけられなかったので、個別のリストを作成した。

  • オブジェクト内要素のカウント

    カウント方法についてはZero Sys(@sys_zero )さんの記事を参考にさせていただいた。

    Power Automate Desktop「俺のデスクトップはきたない」を何とかする

    オブジェクト要素に対してcount関数を指定することが出来た。
    %JsonAsCustomObject2['result'].count%

Google翻訳を使用してガチャガチャする

最後にChromeからGoogle翻訳のページを開き、
WordListの値をHinshiListの独自ルールに基づいて翻訳し結合する。
詳細は割愛する。

フロー4.png

確認ポイント

  • 翻訳

    現在のPADにはIBMの 翻訳 のみがある。
    これはWebAPI経由で使用するIBMのサービスのようなので今回は使用しなかった。
    GASの場合はGoogle翻訳が直接使用できて便利だったので、PADにもカジュアルな翻訳アクションが欲しくなる。

  • Webレコーダー

    Google翻訳のページはWebレコーダーで取得した。
    検索結果表示のテキストボックスは上位のdivタグが取得されていて、それだけでも十分だったが
    検索結果によっては余計なテキストが含まれてしまうことがあったので、セレクタービルダーから厳密に調整した。

    ※ディスプレイがメイン4kでサブFHDの環境のせいか、サブ側ではWebレコーダーがうまく機能しなかった。(これは仕方がないと思う)

所感

という感じで、実際なんの意味もない機能ですが、
PADの練習には申し分ない題材となりました。

なぜPADをUseのか。ThereにPADがIs Thereからだ。

2
1
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
2
1