【UiPath】Javascript を実行する方法

# はじめに

- 本記事では、UiPath で Javascript を実行する方法を紹介します。
- 記事の内容は、個人の見解または確認結果であり、UiPath の公式見解ではありません。
- 製品仕様や参考画像は 23.10 バージョンのもので構成しています。

# 目次

```
# 1）JSスクリプトを挿入
# 2）CScript.exe からキックする
# 3）HTML からキックする
```

# 1）JSスクリプトを挿入

https://docs.uipath.com/ja/activities/other/latest/ui-automation/inject-js-script

UiPathでもっとも簡単にJSを実行するなら「JSスクリプトを挿入」アクティビティがお勧めです。

***■使い方***
1. 「アプリケーション／ブラウザーを使用」を配置し、ブラウザ（適当なページ）を認識させます。
1. 入力したいUI要素、JSファイルのパス、引数、出力プロパティを指定します。

次のキャプチャは入力引数なしの単純なファンクション実行の例です↓↓

![javascriptのテスト6.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/0932bbe1-3948-5c4c-2679-3b09721125b0.jpeg)

***UI要素は変数宣言しなくても、JSファイル側は element の記述で扱えます。***

例えば、ガイド上の説明文を一つUI要素として認識させて実行してみます↓

![javascriptのテスト7-0.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/fdf3e707-ccfd-a6b1-5384-0bf6e26a6020.jpeg)

element.innerHTML を返却してログ↓

![javascriptのテスト7-1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/c57f8a21-91b7-8c2e-96fc-41c425a24bd6.jpeg)

::: note warn
「アプリケーション／ブラウザーを使用」で認識させる対象は***ブラウザ***でなくてはなりません。
UI要素の引数をもちいない、単純なファンクションであっても実行エラーとなります。
![javascriptのテスト8_シンプルに発火させるのでもブラウザ以外はできない.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/2c9bceb5-9c84-f7c9-2d9c-466c371f4ca6.jpeg)
:::

# 2）CScript.exe からキックする

https://qiita.com/segur/items/bcfeedf66a54372e67e6

上の記事を参考に、以下の内容のJSファイル（テスト.js）をつくります。
（表示文（「テスト本文です。」）を記載した file.txt もあわせて作成します。）
```
//必要なオブジェクトを読み込み
var stream = new ActiveXObject("ADODB.Stream");

//ファイルの種類を指定。1:バイナリ、2:テキスト
stream.Type = 2;

//文字コードを指定
stream.charset = "UTF-8";

//ストリームを開く
stream.Open();

try {
  //ファイルを読み込む
  stream.LoadFromFile("file.txt");

  //ファイルから全ての文字列を取得する
  var str = stream.ReadText(-1);

  //文字列を表示
  WScript.Echo(str);
} catch (exception) {
  //エラーメッセージを表示
  WScript.Echo("file.txt is not found.");
}

//ストリームを閉じる
stream.Close();
```
コマンドプロンプトにて「cscript テスト.js」を実行↓

![javascriptのテスト9.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/09ea1471-945c-a148-3a54-a9b49750f360.jpeg)

コンソール上、「テスト本文です。」と表示されました。
これと同様のことを UiPath でおこなうには「PowerShell を呼び出し」アクティビティなどを使います。

![javascriptのテスト10.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/a400873f-551f-0a6d-3e45-f063d388819e.jpeg)

::: note
「PowerShell を呼び出し」アクティビティでスクリプトを実行する際は、
- ***TypeArgument ：「String」***
- ***スクリプト入力のチェック：ON***
に指定するのがポイントです。
:::

# 3）HTML からキックする

HTML と「カスタム入力」アクティビティをもちいて Javascript を実行します↓

[テスト.html]
```
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title>サンプルHTML</title>
</head>
<body>
<form>
<input type="button" value="実行" onclick="returnName()">
<input type="text" id="textbox" value="">
</form>
<script>

//Javascript を記述する
function returnName() {
    var uname = document.getElementById("textbox").value;
    window.external.setResult(uname + "です。");
    return;
}

</script>
</body>
```

「カスタム入力」アクティビティを配置し、HTMLと出力プロパティを指定するだけ！
***window.external.setResult({ここに指定した値をワークフローに返却できます});***

ワークフローを実行するとHTMLがポップアップ表示されます。

![javascriptのテスト12.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/71a9a53e-3c73-d765-379a-867357dd3149.jpeg)

コンテンツを許可し、値を入力＞「実行」ボタンを押下

![javascriptのテスト13.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/c8200e5f-d603-216d-7c2b-97ae90f2a185.jpeg)

出力コンソールでスクリプトの実行結果が確認できます。

![javascriptのテスト11.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/baf90364-cf18-90df-dd32-af89f827b7b4.jpeg)

# まとめ

いかがでしたでしょうか。
いずれも標準アクティビティで実現する方法でご案内しましたが、
UiPath の Marketplace のコンポーネントの取得・利用が可能な場合、
[***JQuery の実行アクティビティ***](https://marketplace.uipath.com/ja/listings/jquery-execution-activities1018?searchId=6a972386-9956-4b0a-b0a8-70516dbceb8e)なども無料で使えそうなのでお試しいただくとよさそうです。
最後までお読みいただきありがとうございますm(_ _)m