ファイルのダウンロード(応用編)
この記事では、Web上からファイルをダウンロードする際の応用編として、以下に記載している様々な場合に対応する設定をご紹介します。
ファイルをダウンロードする基本的な流れは、こちらの記事をご参照ください。
【できるようになること】
- 複数のファイルをダウンロードする場合
- ダウンロードしたファイルを繰り返しで保存
- ダウンロードがうまくいかない場合の対処
ダウンロードしたファイルは、以下のような形で利用可能です。
・各種ストレージに保存
・ログインが必要なサイトにアップロード
・CSVファイルの場合、ReadCSVで二次元配列として出力し、スプレッドシートに転記
・PDFやテキストファイルの場合、中身のテキストを出力
・画像ファイルの場合、OCRによる文字抽出や顔の表情検出
複数のファイルをダウンロードする場合
1つのワークフロー内で複数のファイルがダウンロードされた場合は、GetDownloadListのアウトプットには複数のファイルが格納されています。
複数のファイルが格納されている場合、GetDownloadListアクションのアウトプットをSaveFileアクションのファイルパラメータに指定すると、エラーになります。 これを回避するためには、ダウンロードされたファイルリストの中から、どのファイルを読み込むのかを選択する必要があります。
繰り返し中にダウンロードしたファイルを、ストレージに保存したりするような場合に、最もよく使用される方法です。
- GetDownloadFilesの設定を「降順(DESC)/ファイルの修正時刻順(CREATED)」に設定します。
この設定で、一番最後にダウンロードしたファイルが一番上に来るようになります。 - GetItemFromListアクションを設定します。
- 「リスト」には、GetDownloadFilesのアウトプットを指定します。
- 「インデックス」には、
0
を入力します。
この設定で、「最新のファイルがリストの一番上に表示→リストの一番上の要素を取得」という指定ができます。
今回は一番上のアイテムを選択するため0としますが、もし二番目のアイテムならば1、三番目のアイテムならば2…というようにご設定ください。
- GetDownloadFilesの設定は、特に指定なし(お好みの設定)
- SearchItemFromListアクションを設定します
- 「リスト」には、GetDownloadFilesのアウトプットを指定します
- 「検索クエリ」には、ファイル名を設定します(ワイルドカードの利用が可能です)
この設定では、ファイル名が事前に推測できる場合(日付/IDが含まれるなど)に利用することができます。
ダウンロードに失敗していた時(一致するファイルが0件の時)は、後続の処理をスルーするなどの分岐を設定できるメリットがあります。
ダウンロードしたファイルを繰り返しで保存
複数のファイルをダウンロードしてすべて保存したい場合は、各要素について繰り返す(ForEach)を使用すると簡潔です。
- GetDownloadFilesのアウトプットをForEachの「繰り返すリスト」に設定する
- 「要素を格納する変数名」を設定する
- ForEach内部にSaveFileアクションを入れる
- 「ファイル(パス、ファイル名)」パラメータに「要素を格納する変数名」を、
${変数名}
のように変数形式で記載 - 保存先ストレージ、ディレクトリを適宜設定
上記設定で実行した場合、実行ログは以下のようになります。
ダウンロードした3つのCSVファイルが、順にローカルストレージに保存されています。
ファイルのダウンロードがうまくいかない場合
ファイルのダウンロードがうまくいかない場合は、まず最初に「GetDownloadFilesの実行結果にファイル名が表示されているか?」を確認します。
画像右のようにファイル名が表示されていない場合は、解決のために以下の点を確認していきます。
クリックに関連するアクションや、状況を確認します。
- WaitForDownloadパラメータがONになっているか確認
- セッションログでSelector not Foundとなっていないか確認
- CSSセレクタが正しいかを確認
- ダウンロードボタンのクリック直前のブラウザ系アクションログに、ダウンロードボタンが存在するページが表示されているかどうかを確認
- WaitForDownloadをONに指定/待機時間等検証済み
- ダウンロードするファイルのサイズはあまり大きくない
- CSSセレクタが正しいためにエラーやSelector Not Foundなどが表示されていない
- ダウンロードボタンの存在する画面が表示されている
上記を全て満たしているにもかかわらず、GetDownloadFilesに何も表示されていない場合があります。
この場合、ダウンロードボタンをもう一度クリックするアクションを設置すると、正常にダウンロードされる場合があります(サイトの構造による)。
【ここに入れる】