ExcelからURLリンクを抽出し、WEBに貼付てダウンロードしたい

以下を実現したいです。Uipath初心者のため詳しくご教示いただけますと助かります。

①Excelから4つのダウンロードURLリンクを抽出して、それぞれをWebに貼付
②ダウンロード時に必要なパスワードをExcelから抽出し、パスワード入力
パスワードは「」で囲まれた12文字
例)「9!&.ZTL.VX_~」

よろしくお願いいたします。

こんにちは

上記の情報だけでは必要な情報が不足していますので、ダミーデータでも良いので、具体的なワークシート(スクリーンショットや実際のファイル)、抽出すべき項目、それを特定するための情報等を共有いただくと良いかと思います。

ご回答いただきましてありがとうございます。
情報が不足しているとのこと失礼いたしました。

以下、Excelファイルの例です。
こちらで問題ございませんでしょうか。

よろしくお願いいたします。

こんにちは

パスワード抽出

System.Text.RegularExpressions.Regex.Match(strCellA1,"(?<=「).*?(?=」)").Value

リンク抽出
URLの終わりの部分が文字列的にどのようになっているか依存しますが
例えば

mc = System.Text.RegularExpressions.Regex.Matches(strCellA2,"https?://[\u0020-\u007f]*")

として内容をイテレート

mcはMatchCollectionクラス
strCellA1, strCellA2はそれぞれA1,A2から抽出した文字列

ご回答いただきましてありがとうございます。
すみません。よくわからないのですが、以下の流れになるということでしょうか?

Excelファイルを使用

一致する文字列を取得
・正規表現を設定
リテラル:System.Text.RegularExpressions.Regex.Match(strCellA1,“(?<=「).?(?=」)").Value:指定回数1
URL:値は規定値:指定回数4
・入力:Excel.Sheet(“Sheet1”).Cell(“A7”) ←セルは適当です。

代入
変数mc=System.Text.RegularExpressions.Regex.Matches(strCellA2,"https?://[\u0020-\u007f]
”)

繰り返し(コレクションの各要素)
繰り返し:currentMatch
次のコレクション内の各要素:mc
TypeArgument:System.Text.RegularExpressions.Match

メッセージボックス
テキスト:currentMatch.Value

理解力がなくすみません。よろしくお願いいたします。

こんにちは

各セルの読み込みはセル読み込みアクティビティを使用してください。
その結果として文字列変数strCellA1,strCellA2に代入してください

パスワード抽出は代入アクティビティで

strPassword = System.Text.RegularExpressions.Regex.Match(strCellA1,"(?<=「).*?(?=」)").Value

のようにすればOKです。

1 Like

ご回答いただきましてありがとうございます。
以下の認識で合っていますでしょうか、、?

また、代入で以下エラーが出るのですが、解消法をご教示いただきたいです。

よろしくお願いいたします。

変数名が一致していないためと思います。

セル読み込みで指定している変数がstrCell1なので、式中の変数をこちらにあわせるか、
セル読み込みで指定する変数をstrCellA1にしてください。

1 Like

ありがとうございます。
strCellA1は統一したら解消しました!
ですがstrCellA2は依然エラー出たままでした。

以下₋エラー表示内容です。
“System.Text.RegularExpressions.Regex.Matches(strCellA2,“https?://[\u0020-\u007f]*”)” の処理中にコンパイル エラーが発生しました。(2) : error BC30311: 型 ‘MatchCollection’ の値を ‘String’ に変換できません。

よろしくお願いいたします。

変数mcをMatchCollection型にしてみてください

1 Like

ご回答いただきましてありがとうございます。

ご教示いただいたように変数の型を変更することでエラー解消に至りました。
ありがとうございます!

度々申し訳ないのですが、実行すると正規表現でエラーになってしまいます。
以下エラー表示です。
一致する文字列を取得: Value cannot be null. (Parameter ‘input’)

よろしくお願いいたします。

上記実装するにあたりそのアクティビティは使っていないと思いますが...余分なもの残っていませんか?

1 Like

ご回答いただきましてありがとうございます。

アクティビティの削除をしたら解消しました!
ありがとうございます。

ただ、Excelファイルに記載してあるURLが4個以上あり、上位4つだけ抽出したいのですが可能でしょうか…?
また、抽出後、ダウンロードリンクをWebに張り付けるにはメッセージボックスのアクティビティからでは難しいですか?

よろしくお願いいたします。

いくつか方法はありますが、繰り返しの最大回数を指定すると良いかと思います。

抽出後、ダウンロードリンクをWebに張り付けるにはメッセージボックスのアクティビティからでは難しいですか?

一般的には、文字入力アクティビティを使用します。

1 Like

ご回答いただきましてありがとうございます。
文字入力アクティビティが一般的とのこと承知いたしました。

では、メッセージボックスの代わりに「CV文字を入力」アクティビティを入れる形でよろしいでしょうか。
「CV文字を入力」アクティビティを使用する場合、「CV画面スコープ」が必要かと存じますが、「画面上で指定」を押下し、ブラウザを選択すると「サーバからの応答は無効です。[403]」と表示されます。
権限等の問題でしょうか。。

以下で実施はできないでしょうか?
繰り返し>ブラウザーを使用>ブラウザを選択>URLに移動←ここで変数mcを指定(String型ではないため不可と表示されてしまいましたが)

お手数をおかけしますが、何卒よろしくお願いいたします。

いいえ、文字を入力アクティビティです。

ブラウザを使用アクティビティの中に繰り返しを入れた方が良いです。
mcではなく上記で実装いただいた通り、CurrentMatch.Valueをセットする必要があります。

1 Like

ご回答いただきましてありがとうございます。
URLに移動アクティビティでExcelから抽出したダウンロードリンクを開くことができるとのこと承知いたしました。

設定を作ってみましたが、URLに移動アクティビティに「currentMatch.Value」を入力するとエラーが出てしまいます。currentMatchの変数は「IEnumerable」となっているのですが、エラー表示ではValueは「Matchcollection」のメンバーではありません。と表示されます。

以下、話が飛んでしまい恐縮です。
繰り返しアクティビティの動作を4回と設定したと思いますが、ダウンロードリンクが4回抽出されるかと思いますが、回数を4回と絞ってもパスワードの抽出は問題なくされるのでしょうか?

また参考までにご教示いただけたら嬉しいのですが、Uipathの勉強の本などでおすすめのものはありますか?

繰り返し(コレクションの各要素)の引数の型(TypeArgument)を上記の画像と同じにしてみてください。

繰り返しアクティビティの動作を4回と設定したと思いますが、ダウンロードリンクが4回抽出されるかと思いますが、回数を4回と絞ってもパスワードの抽出は問題なくされるのでしょうか?

パスワードの抽出は最初に行っているので、4回の繰り返しと独立しているので問題ないと思いますが、詳細要件がわかりませんので、実際に試す方が良いかと思います。

また参考までにご教示いただけたら嬉しいのですが、Uipathの勉強の本などでおすすめのものはありますか?

まずは無償のe-learningであるUiPath Academyが良いのではと思います。

1 Like

ご回答ありがとうございます。

繰り返しアクティビティのTypeArgumentを変えたらエラー解消しました!!
ありがとうございます!

実行してみたらURLをブラウザに貼ってくれるようになったのですが、一つのブラウザに1つずつURLを消しては貼り付けて、消しては貼り付けてを繰り返したのち、ブラウザを閉じてしまいます。。
1つのブラウザに1つのURLを貼り付けて、ブラウザを閉じないように設定はできますでしょうか。
次から次へとすみません。

Uipathアカデミーがおすすめとのこと承知いたしました!ありがとうございます!
まずはそちらを試してみます!

五月雨式にすみません。
ブラウザが閉じないようにするには、ブラウザーを使用アクティビティのプロパティでクローズ動作をNeverにすることで解消できました。

しかし、1つのブラウザに4つのURLを貼り付けを行っており、4つ目のURLのみ開かれてしまいます。
1つのブラウザに1つずつURLが開かれるようにするにはどのような設定を行うべきでしょうか。。

ブラウザを使用アクティビティを繰り返しアクティビティの中に入れてあげて、繰り返し最大数を4に設定し、ブラウザを使用アクティビティの中の繰り返しアクティビティの繰り返し最大数を1に設定すればよいのかと思ったのですが、、
そしたら1つ目のURLで8つブラウザが起動してしまいました。。

よろしくお願いいたします。