Robotic Crowd

Robotic Crowd

ファイルのダウンロード

Author: Asao Nakamura 339 views

この記事では、WEBページからファイルをダウンロードする設定について紹介します。

【できるようになること】

  • ワークフローでダウンロードしたファイルを取得
  • ダウンロードしたファイルを繰り返し内部で取得
  • ダウンロードがうまくいかない場合の対処
ファイルのダウンロードを利用する場面

ダウンロードしたファイルは、以下のような形で利用可能です。
・各種ストレージに保存
・ログインが必要なサイトにアップロード
・CSVファイルの場合、ReadCSVで二次元配列として出力し、スプレッドシートに転記
・PDFやテキストファイルの場合、中身のテキストを出力
・画像ファイルの場合、OCRによる文字抽出や顔の表情検出

 ファイルのダウンロード

Robotic Crowdでファイルのダウンロードを行う場合は、おおよそ次のような手順で設定されます。

  • ダウンロード要素をクリックするアクションのWaitForDownloadパラメータをONにする
  • ダウンロード要素をクリックする
  • GetDownloadFilesでダウンロードしたファイルを取得

以下より、手順を紹介します。

 

通常のClickアクションのパラメータのうち、WaitForDownloadをONにすると、クリック後にダウンロード完了を待つようになります。

  • Clickを設定します。
  • ダウンロードボタン等のHTML要素のCSSセレクタを設定します。
  • WaitForDownloadパラメータをONにします。

 

 

実際にダウンロードされたファイルは、ワークフロー実行環境に一時的に生成されるストレージのdownloadディレクトリに格納されます。
※この一時ストレージはワークフロー実行の終了と同時に環境ごとすべて削除されます。

downloadディレクトリに格納されているファイルの一覧は、「GetDownloadFiles」アクションを利用して確認することができます。

  • 順序:リストの並び方を昇順/降順で選択
  • キー:並び替えを行うキー設定(ファイル名/ファイルの修正日時)

以下の設定例では、最新の取得ファイルがリストの一番上に表示されます。

 

ダウンロードされたファイルが1つの場合、GetDownloadFilesのアウトプットをそのまま利用できます。
例えばこのアウトプットをSaveFileのインプットに指定すると、ファイルが任意のストレージに保存されます。

参考:ウェブサイトからファイルをダウンロード

複数のファイルをダウンロードした場合は、ダウンロードしたファイルからファイルを選択する必要があります。この方法は後段の「ループ中または複数ファイルのダウンロード」をご参照ください。

 複数のファイルをダウンロードする場合

1つのワークフロー内で複数のファイルがダウンロードされた場合は、GetDownloadListのアウトプットには複数のファイルが格納されています。

複数のファイルが格納されている場合、GetDownloadListアクションのアウトプットをSaveFileアクションのファイルパラメータに指定すると、エラーになります。 これを回避するためには、ダウンロードされたファイルリストの中から、どのファイルを読み込むのかを選択する必要があります。

以下、ファイルの選択方法を紹介します。

繰り返し中にダウンロードしたファイルを、ストレージに保存したりするような場合に、最もよく使用される方法です。

  • GetDownloadFilesの設定を「降順(DESC)/ファイルの修正時刻順(CREATED)」に設定します。
  • GetItemFromListアクションを設定します。
  • 「リスト」には、GetDownloadFilesのアウトプットを指定します。
  • 「インデックス」には、0を入力します。

この設定で、「最新のファイルがリストの一番上に表示→リストの一番上の要素を取得」という指定ができます。

※このGetItemFromListのアウトプットは、SaveFileやSetFileToUploadなどのインプットに指定可能です。
  • GetDownloadFilesの設定は、特に指定なし(お好みの設定)
  • SearchItemFromListアクションを設定します。
  • 「リスト」には、GetDownloadFilesのアウトプットを指定します。
  • 「検索クエリ」には、ファイル名を設定します。(ワイルドカードの利用が可能です。)

この設定では、ファイル名が事前に推測できる場合(日付/IDが含まれるなど)に利用することができます。

ダウンロードに失敗していた時(一致するファイルが0件の時)は、後続の処理をスルーするなどの分岐を設定できるメリットがあります。

※このSearchItemFromListのアウトプットは、SaveFileやSetFileToUploadなどのインプットに指定可能です。

 ファイルのダウンロードがうまくいかない場合

ファイルのダウンロードがうまくいかない場合は、まず最初に「GetDownloadFilesの実行結果にファイル名が表示されているか?」を確認します。

画像右のようにファイル名が表示されていない場合は、解決のために以下の点を確認していきます。

クリックに関連するアクションや、状況を確認します。

  • WaitForDownloadパラメータがONになっているか確認
  • セッションログでSelector not Foundとなっていないか確認
  • CSSセレクタが正しいかを確認
  • ダウンロードボタンのクリック直前のブラウザ系アクションログに、ダウンロードボタンが存在するページが表示されているかどうかを確認

ダウンロードボタンをクリックした際に、一瞬別ウィンドウ/別タブが開く場合があります。

この場合、ヘッドフルモードを切り替えるとダウンロードできる場合があります。

参考:ヘッドフルモードに切り替え

クリックアクションのWaitForDownloadパラメータとは別に、単体アクションとしてWaitForDownloadアクションが存在しています。

このアクションを使用し、ダウンロード待機時間を増やすことも手段として考えられます。

パラメーター設定は不要ですが、任意で次のパラメーターを設定できます。

  • ファイル名:任意のファイル名の取得を待機
  • 確認間隔:新規ファイル取得の確認を行う時間間隔
  • タイムアウト:最大待機時間(未入力の場合のデフォルト値:3分)
  • WaitForDownloadをONに指定/待機時間等検証済み
  • ダウンロードするファイルのサイズはあまり大きくない
  • CSSセレクタが正しいためにエラーやSelector Not Foundなどが表示されていない
  • ダウンロードボタンの存在する画面が表示されている

上記を全て満たしているにもかかわらず、GetDownloadFilesに何も表示されていない場合があります。

この場合、ダウンロードボタンをもう一度クリックするアクションを設置すると、正常にダウンロードされる場合があります(サイトの構造による)。

【ここに入れる】

このページは役に立ちましたか?