こんにちは。
自称)BizRobo!エンジニアのもりりんです。
今回は、実務ロボットでDAのJavaScriptを操作する機会があったので、簡単に使い方をまとめておこうと思います。
BizRobo! Ver11まではDAで日付のデータ型がないため、日付の取得、日付フォーマットの変換をしています。
JavaScriptとは
Webアプリ(ブログサイトや企業が提供するサービスも含む)で利用されるプログラム言語です。
主な目的は、、見た目の加工、ボタンクリック、サーバからデータ取得/データ登録(同期/非同期)等々、今日のWebアプリではかなり重要な仕組みとなっています。
HTMLを含むWebアプリ開発の初期研修では、HTMLでレイアウト、CSSでデザイン、JavaScriptで動作を付加していくことが多いかと思います。
私も過去に新人研修を担当していた時期は、上記に従って思い思いのWebページを作ってもらうことがありました。
まあ、その後のサーバ構築で地獄を見るのが恒例でしたが…w
DAでJavaScriptを実行する
前置きはさておき、内容に入っていきましょー。
ご紹介することは、以下の3つです。
- 今日の日付を取得する
- 日付を加減する
- フォーマットを変更する
また、JavaScriptもシンプルな利用方法を採用します。
BizRobo!で利用する場合では、そこまでお作法に拘らなくてもいいかと思うので、できるだけシンプルかつ再利用できるようにしておきます。
ただし、DA内ではDSのようにスニペットを呼び出せないため、再利用を考慮すると日付加工用のJavaScriptだけを定義したDAロボットを作成する必要があります。
もしくは、カスタムアクションステップに日付加工系のユーティリティがないか確認する、なければNode.jsで簡単に作ってみるのもアリですね。
JavaScriptで今日の日付を取得する
まずは、JavaScriptの呼び出しアクションを設定します。
レコーダービューのタブを右クリックし、「JavaScriptの実行」から追加します。
続いてですが、JavaScriptを書きましょう…で終わってしまうので、まずは基本の形を書き出します。
JavaScriptでは、1文の最後に「;(セミコロン)」、関数(やクラス)は「{ }(鉤括弧)」で囲むルールです。

JavaScriptを含め、プラグラム言語では「変数(BizRobo!でいうデータ型)を使えるように初期化」してから目的の処理を記載します。

日付は、エクスプレッションでもおなじみのDate(クラス)を利用します。
ただし、BizRobo!とは利用法が若干異なるので注意してください。

上記の処理をDAに追加します。
今回はDAのChromium上で作成しますので、必ず参照アクションからブラウザを表示しましょう。
レコーダービューのブラウザタブを右クリックし、「アプリケーション アクション」 – 「JavaScriptの実行」を選択します。

「JavaScriptの実行」 – 「javaScript」に入力します。
上記の処理は、外部からパラメータを渡さないため、文字として入力しています。
なお、JS実行結果に指定できるデータ型は「Text」のみとなっているため、JavaScriptの出力も文字列にしないとエラーまたは、正常に動作しません。

終わったら、実行するだけです。
結果を受け取る変数に日付が入っていれば成功です。
日本は、日付の区切りが「/」で表示されていれば、JSTフォーマットになっていることが確認できるかと思います。

日付を加減算する
続いて、日付を加算、減算します。
加算、減算とありますが、基本的には加算のみ対応可能です。
その代わり、差分として扱う数値を+/ーで管理します。
下記のようなイメージです。

日付の加算は、Date変数に存在する関数「getDate」で日付を取得し、そこに数値を加算し、関数「setDate」で保存できます。
文字ではイメージしづらいので、先ほどと同様にプログラムとして書いてみます。

また、Date関数を利用するメリットとして、月跨ぎやうるう年等の計算は自動で行われます。
DAへの反映は、先程と変わらないので、結果確認も含め1枚の画像で確認します。

フォーマットを変更する
最後は、フォーマット変換です。
ここに関しては必要になるかはわかりませんが、簡単な方法をメモとして残しておきます。
簡単な方法としては、3種類かなと思います。
- toLocaleString(または、toISOString)を利用して、日付部分を抽出する
- 年月日をそれぞれ取得し、区切り文字で結合する
- Intl APIのDateTimeFormatを利用する
プログラミング記事でよく紹介されるのは、2ですね。
01月や01日といった表記を利用したい場合も2となります。
最後なので解説なしで、実行結果のみ残しておきます。
どちらに当てはまるか、どういことをしているのか検索したり、流行りのChatGPTにでも聞いてみてください。
注意点として挙げると、JavaScriptよりDAのエクスプレッションです。
変数等を利用できる構文モード(右側に=が表示された状態)では、ダブルクォーテーションで括れるのは1行のみということです。
今まで紹介してきたように複数行に渡る場合は、1行単位で文字列として扱う必要があるため注意しましょう。

最後に
最後は簡単に記載しましたが、いかがでしたでしょうか。
Ver11.3からはDAでもDate型が利用できるようになっているので今回紹介した内容は参考にならないかと思いますが、JavaScriptでできることは多岐にわたります。
正直なところ、ブラウザに表示した内容をDAアクションを利用せずにJavaScriptのみでクローリングを完結させることすら可能です。
他にもクリックイベントを、大量文字の入力をJavaScriptで代行する等もできます。
特にChromiumではクリップボードを利用できないため、大量の文字をテキストエリア等に入力する場合、かなり時間がかかるか、DS上ではハングアップします。
そういった場合に有効活用できるかと思います。
カスタムアクションステップで代行できるものもありますが、簡単なユーティリティは自作してナレッジ化していくと、より便利にDAを活用できるのでは?とは考えています。
今回も最後までお読みいただきありがとうございました。
今流行りのChatGPTをBizRobo!から活用してみたいですね。(Lineやslackから活用する方が需要があるかと思いますが…)

RPAは一般的な業務システムとは異なり、PoCを実施し、導入・運用開始で終わりではありません。
導入がスタートラインです。
業務効率化、人員最適化等の目標に応じた計画策定や人員配置、業務ロボットの開発・運用といったPDCAサイクルが必要です。
弊社では、貴社の課題に適した自動化プランのご提案や開発者育成研修も実施し、貴社と並走したサポートをご提供いたします。
お気軽にお問い合わせください。
BizRobo!や弊社サポートについて詳しくはこちら