RPAエンジニアの雑記

RPA(Blue Prism)について色々記載してます。

(UiPath)Excelブックを読み取りパスワードをつけて保存する

ご無沙汰してます、おむおむです。

皆様、お元気でしたか。 私はやや疲弊していますが、概ね元気です。
プロジェクトのデリバリって大変ですね(しみじみ)


さて、今まではBlue Prismを取り扱ってきましたが、
趣向を変えてUiPathについて諸々書いてみたいと思います。


やりたいこと

読み取りパスワードがついていないExcelファイルを開き、
読み取りパスワードをつけて保存する、という処理を実装したいと思います。


UiPathの標準アクティビティでは、
既にパスワードがついているブックを開くことはできますが、
新規 or 既存のブックにパスワードをつけて保存することはできないようです。

そもそもブックにパスワードをかけたところで
セキュリティ上意味はあるのか、という疑問を持ってはいけません。
世の中そう簡単ではないのです()。

そんなこともあり、今回はパスワードをつけて保存する方法について
ちょっと調べてみたので、記事にしてみたいと思います。


結論

必要な名前空間をインポートしてアセンブリ参照を追加すれば、
InvokeCodeで実装できます。

詳細はこちらを参照ください。↓
www.cresco.co.jp


...というだけでは味気ないので、
やってみたことをちょっと細かく書いていきます。

※ほぼ明日の自分への備忘なので、TryCatch等は実装しません。
 業務で使う場合は、適宜いい感じに実装してください。


名前空間のインポート

まず、今回使用するクラスの名前空間をインポートします。

まず、VB.NETExcelを操作するために一般的に使われる
Microsoft.Office.Interop.Excelをインポートします。
f:id:newgraduate19:20210523220527p:plain

もしOCからパスワードを取得する場合は、
System.Security.SecureStringクラスを使用します。
ただ、ExcelのSaveAsメソッドの引数としてのパスワードはString型なので、
SecureString→Stringに変換する必要があります。
その際にMarshalクラスの処理を使用するため
名前空間System.Runtime.InteropServiceも
併せて追加したほうが便利です。
f:id:newgraduate19:20210523220331p:plain

アセンブリ参照の追加

どうやら上記で追加したMicrosoft.Office.Interop.Excelのdllは
xaml内では参照されていないようなので、追加してあげる必要があります。

xamlファイルをテキストエディタで開き、
f:id:newgraduate19:20210523220838p:plain

AssemblyReference要素として
Microsoft.Office.Interop.Excelを追加します。
f:id:newgraduate19:20210523221009p:plain

「令和になってもSakuraエディタとかwww」
という煽りは受け付けません。


コードを書く

ここまでで事前準備は完了です。
あとはInvokeCodeアクティビティでVB.NETのコードを書いていきます。

最低限必要な処理を書いていけばこんな感じです。
(変数として既存ファイルパスのfilePath、
保存先ファイルパスのsaveFilePath、
読み取りパスワードのreadPasswordをそれぞれString型の引数として追加しています。)

Dim excelApplication As Application = New Application()
Dim excelWorkbook As Workbook = excelApplication.Workbooks.Open(filePath)
excelWorkbook.SaveAs(FileName:=saveFilePath, Password:=readPassword)
excelWorkbook.Close()
excelApplication.Quit()

ファイルの存在チェックやパスワードのIsNullOrWhiteSpaceのチェックは
適宜つけてください。
眠くてめんどくさいのでこの記事ではつけてません(雑)。


まとめ

・コード自体は単純だけど、実行するまでの事前準備が比較的多い
・1つxamlやライブラリを作って共通部品化すればかなり使い勝手がよさそう


土曜日に有名なお店のフレンチトーストを食べに行くことだけを楽しみに
今週のハイパー残業ウィーク(予定)を乗り切りたいと思います。

tabelog.com
f:id:newgraduate19:20210523233938p:plain


(BluePrism)Web API 再検証 ~認証編~

ご無沙汰しております。おむおむです。
プロレス四天王の中では小橋建太が一番好きです。

春は出会いと別れの季節、
私も何かと変化がありました。

意思決定に至った経緯とかは
いずれ書くかもしれないし、書かないかもしれません。

一応このブログはアウトプットの場として
細々と続けていく予定なので、引き続きよろしく☆

とりあえず今後の人生で
二度と転職と引っ越しを同じタイミングでしない
強く心に決めました。 手続きに押しつぶされて死にそうでした。

f:id:newgraduate19:20210413200327p:plain


はじめに

今回から何回かに分けて、Blue Prism v6.4ぐらいからリリースされた
Web API機能について書いていきたいと思います。

過去の記事でもちょこっと触れてはいるのですが、
Poke API という認証が不要なAPIを使っていて、
実務で使えるレベルの理解ができていなかったので、
ちょっと細かめに見ていきたいと思ったのがきっかけです。

このシリーズでは Twitter API を使用してみたいと思います。
なお、本筋とは関係ないので、Twitter API 自体の使用方法については
省略させてもらいます。

テキトーに利用申請方法をググって、
テキトーにcurlとかで叩いてみてください。
developer.twitter.com


Web API機能とは?(おさらい)

Web API 機能は、その名の通り
Blue Prism で Web API を操作するための機能です。

システム->オブジェクト->Web APIサービスから使用できます。
f:id:newgraduate19:20210405201356p:plain

URLエンドポイントごとにアクションを作成し、
スタジオで通常のオブジェクトと同様に
アクションステージから呼び出す形で使用することができます。
f:id:newgraduate19:20210413200710p:plain


Web API で認証情報を使用する

ここまでは前も紹介した内容でした。
ここから、ちょいと踏み込んだ内容にしていきたいと思います。

Blue Prism では、通常のパスワードと同様、
Web API の認証に使用する
各種認証情報をセキュアに管理することが可能です。

あまり使う機会はないかと思いますが、
認証情報のプロパティにある「タイプ」のプルダウンから
様々な認証情報を選択することができます。
f:id:newgraduate19:20210413201539p:plain

詳細はこちらから。
bpdocs.blueprism.com

ちなみに今回は、特に使用頻度が高いであろう
OAuth 2.0 (クライアント認証)Bearer 認証について書いてみます。
JWT や Basic について気になる方は自分で調べてね☆


使ってみる

では、実際に使ってみましょう。

なお、今回は Twitter API の v2 を使います。
f:id:newgraduate19:20210414205636p:plain

Call するのは、GET の /2/tweets/search/recent です。
こいつを使って、
私の Twitter のアカウントのツイートのデータを
最新のものから10件取得しようと思います。
f:id:newgraduate19:20210414215219p:plain

ちなみにURLクエリパラメータは、
URLエンコードしてもしなくてもどっちでもいいようです。
:(コロン)でも%3Aでも問題なくできました。

OAuth 2.0 (クライアント認証)

まずは OAuth の方から使ってみます。

認証情報

認証情報はこんな感じ。
通常の認証情報同様、
この認証情報を使用する API を呼び出す
プロセスやユーザ、リソースに対して
適切なアクセス権を付与することをお忘れなく。
f:id:newgraduate19:20210414204222p:plain

Web APIサービスの設定

API の名称の下の階層にある
共通認証」から、認証タイプと認証情報を選択します。
そしてトークン発行のエンドポイントとなる URIを入力すればOKです。
f:id:newgraduate19:20210414211549p:plain

Bearer

続いて Bearer 認証です。
ほぼ同じです()

認証情報

こんな感じです。
Bearer Token をコピペします。
f:id:newgraduate19:20210414222914p:plain

Web APIサービスの設定

OAuth の方と同様に、
「共通認証」から Bearer を選択します。
Bearer Token は持ってるだけでOK!というやつなので、
認証用の URI などは不要です。
f:id:newgraduate19:20210414223204p:plain

動かしてみよう

動かしてみた結果がこちらになります。
(n分クッキング的な)
f:id:newgraduate19:20210414223540p:plain

ちゃんと結果が返ってきてますね。
やったぜ☆

まとめ

トークンとかもセキュアに管理できるぜ
・やっぱり通常のオブジェクトみたいに使えるのは便利だぜ
JSON Path 毎回忘れちゃうぜ

次は完全に自分への備忘録として
JSON Path 記法について書こうかな。
(時間があるとは言ってない)

(BluePrism)Blue Prism Capture v2.0リリース!

どうも、おむおむです。

寒かったり暖かかったり、
体調を崩しやすいかと思うので、皆様もご自愛ください。
(〆のあいさつのような始まり)
f:id:newgraduate19:20210228110429p:plain

Blue Prism Capture とは?

PDD(Process Difinition Document) を自動で作成するためのツールです。

詳細はこちら↓
newgraduate19-rpa.hatenablog.com

ちなみに過去バージョン(v1.0)と最新のv2.0で
インストーラーを置いているURLが違います。
v2.0はこちらから↓
https://portal.blueprism.com/capture-2-0


アップデート内容

機能としての大枠は変わっていませんが、
バグフィックスに加え、以下のような更新があるようです。


・ブラウザを使用しない

以前はChromeを使用する必要がありましたが、
v2.0以降からは独立したウィンドウが開くようになりました。

Edge や Firefox ユーザには嬉しいのかもしれません。


・管理者権限不要バージョンが登場

インストーラーが、従来通り管理者権限が必要なものと、
管理者権限が不要なものの2種類になりました。

どこかの国産薄皮饅頭を彷彿とさせますね。

ちなみに機能差に関する記述はなさそうなので、
好きな方を選択してよいかと思います。


・プロセスのスケルトンをエクスポートできる

恐らくここが最大の変更点かと思います。

操作手順をキャプチャした後、
それをもとにプロセスのスケルトン(骨組み)として
XML形式でエクスポートできるようになりました。
f:id:newgraduate19:20210228104352p:plain

アプリケーションごとにサブページに分かれ、
Capture 側で設定したステップごとに
空のアクションステージが作成される感じです。
f:id:newgraduate19:20210228104902p:plain

使える・・・かどうかはなんともですが、
今後 ALM(Automation Lifecycle Management) との
連携が進んでいくので、今後に期待ですね☆

ちなみにALMの詳細はここから見れます。
Capture 含む ALM Suite についてわかりやすく説明してくれています。
www.blueprism.com


・ヘルプページの刷新

製品のアップデートと同時に、
オンラインヘルプの内容も更新されました。
bpdocs.blueprism.com

v1.0からのアップデート方法や必要スペック、
FAQの内容など諸々充実していますので、
細かいことはこちらを見てください(ぶん投げ)


まとめ

・諸々機能追加 & バグフィックス
・日本語化よろしくプリーズ
・PAT(Process Assessment Tool) についてもいつか記事書きます

いい天気だし、今日は長めにお散歩しよう