Docly Child

ファイルのダウンロード(応用編)

2791 views

この記事では、Web上からファイルをダウンロードする際の応用編として、以下に記載している様々な場合に対応する設定をご紹介します。
ファイルをダウンロードする基本的な流れは、こちらの記事をご参照ください。

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

  • 複数のファイルをダウンロードする場合
  • ダウンロードしたファイルを繰り返しで保存
  • ダウンロードがうまくいかない場合の対処
ファイルのダウンロードを利用する場面

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

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

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

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

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

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

  • GetDownloadFilesの設定を「降順(DESC)/ファイルの修正時刻順(CREATED)」に設定します。
    この設定で、一番最後にダウンロードしたファイルが一番上に来るようになります。
  • GetItemFromListアクションを設定します。
  • 「リスト」には、GetDownloadFilesのアウトプットを指定します。
  • 「インデックス」には、0を入力します。

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

このGetItemFromListのアウトプットは、SaveFileやSetFileToUploadなどのインプットに指定可能です。
※インデックスの数字は、0始まりでGetDownloadFilesのリストの○番目と対応しています。
今回は一番上のアイテムを選択するため0としますが、もし二番目のアイテムならば1、三番目のアイテムならば2…というようにご設定ください。
  • GetDownloadFilesの設定は、特に指定なし(お好みの設定)
  • SearchItemFromListアクションを設定します
  • 「リスト」には、GetDownloadFilesのアウトプットを指定します
  • 「検索クエリ」には、ファイル名を設定します(ワイルドカードの利用が可能です)

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

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

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

 ダウンロードしたファイルを繰り返しで保存

複数のファイルをダウンロードしてすべて保存したい場合は、各要素について繰り返す(ForEach)を使用すると簡潔です。

  • GetDownloadFilesのアウトプットをForEachの「繰り返すリスト」に設定する
  • 「要素を格納する変数名」を設定する
  • ForEach内部にSaveFileアクションを入れる
  • 「ファイル(パス、ファイル名)」パラメータに「要素を格納する変数名」を、${変数名}のように変数形式で記載
  • 保存先ストレージ、ディレクトリを適宜設定

上記設定で実行した場合、実行ログは以下のようになります。
ダウンロードした3つのCSVファイルが、順にローカルストレージに保存されています。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

【ここに入れる】

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