ファイルを解凍する
この記事では、zipファイルを解凍する方法を紹介します。
【できるようになること】
・zipファイルを解凍
・解凍されたzipの中から特定のファイルを取り出す
・解凍されたzip内部の各ファイルを繰り返しで利用する
zipファイルの中身を取り出したい場合に使用します。
DecompressFile
RoboticCrowdのDecompressFileアクションを使用すると、zipファイルを解凍し、中のファイルを一覧として表示することができます。
※.zipのみ解凍できます。.rarや.7zは解凍できません(2022年10月現在)

ワークフローの設定例
例として、以下のようなワークフローを作成してみます。
「csvファイルが複数格納されたzipファイル」をダウンロードして解凍後、中の全てのcsvファイルの値を読み込む
まず最初に、総務省から「平成27年度電波の利用状況調査の調査結果」のzipファイルをダウンロードします。
以下をエディタモードから貼り付けてください。貼り付け方法はこちらになります。
# ブラウザを開く(総務省) +open_browser_1: action>: OpenBrowser url: 'https://www.tele.soumu.go.jp/j/ref/research/tool/result/27result/27band/' lang: 'ja-JP' headless: true # ダウンロードボタンをクリック +click_1: action>: Click browser: +open_browser_1 selector: ':nth-child(2) > :nth-child(3) > a' confirm: true ignoreError: true waitForDownload: true # ダウンロードファイル一覧 +get_download_files_1: action>: GetDownloadFiles order: DESC sort_by: CREATED
1.でファイルがzipファイルとしてダウンロードされているため、解凍処理を設定します。
- DecompressFileを設定します。
- 「ファイル」パラメータに、GetDownloadFileのアウトプットを指定します。
- 詳細設定を開き、「圧縮時の文字コード」パラメータからShift_JISを選択します。

zipの中の各csvファイルを読み込むために、繰り返しを設定します。
- ForEachを設定します。
- 「繰り返すリスト」パラメータに、DecompressFileのアウトプットを指定します。
- 「要素を格納する変数名」パラメータに、任意の変数名を入力します。

最後に、csvを順番に読み込みます。
- ReadCSVを設定します。
- ファイル名パラメータに、ForEachの「要素に格納する変数名」に指定した変数を、以下フォーマットで入力します。
${csv}



# ブラウザを開く(総務省)
+open_browser_1:
action>: OpenBrowser
url: 'https://www.tele.soumu.go.jp/j/ref/research/tool/result/27result/27band/'
lang: 'ja-JP'
headless: true
useShadowDomSelector: false
private: false
# ダウンロードボタンをクリック
+click_1:
action>: Click
browser: +open_browser_1
selector: ':nth-child(2) > :nth-child(3) > a'
confirm: true
ignoreError: true
timeout: 30000
waitForDownload: true
private: false
# ダウンロードファイル一覧
+get_download_files_1:
action>: GetDownloadFiles
order: DESC
sort_by: CREATED
private: false
# ファイルを展開する
+decompress_file_1:
action>: DecompressFile
file: +get_download_files_1
private: false
# 各要素について繰り返す
+for_each_1:
for_each>:
csv: +decompress_file_1
_do:
# CSVを読み込む
+read_c_s_v_1:
action>: ReadCSV
filename: ${csv}
headers: true
private: false
解凍したzipからファイルを取得する方法
繰り返しを使わずに、解凍したzipファイルからファイルを取り出す/フィルタリングする方法を紹介します。
この方法は、他のリスト形式のアウトプットを持つアクションに対しても有効/汎用可能です。
GetItemFromListを使用する方法です。
この方法では、リスト型アウトプット(1次元配列)から番号で指定した要素を、テキスト形式で1つだけ取り出せます。

SearchItemFromListを使用する方法です。
この方法では、リスト型アウトプット(1次元配列)から任意のテキストを含む要素を、リスト形式で複数取り出せます。

検索クエリにファイルの拡張子を指定する形での使用が便利です。

# ブラウザを開く(総務省) +open_browser_1: action>: OpenBrowser url: 'https://www.tele.soumu.go.jp/j/ref/research/tool/result/27result/27band/' lang: 'ja-JP' headless: true # ダウンロードボタンをクリック +click_1: action>: Click browser: +open_browser_1 selector: ':nth-child(2) > :nth-child(3) > a' confirm: true ignoreError: true waitForDownload: true # ダウンロードファイル一覧 +get_download_files_1: action>: GetDownloadFiles order: DESC sort_by: CREATED # ファイルを展開する +decompress_file_1: action>: DecompressFile file: +get_download_files_1 filename_encoding: Shift_JIS # リストから要素を取得 +get_item_from_list_1: action>: GetItemFromList list: +decompress_file_1 index: '0' # リスト内を検索 +search_item_from_list_1: action>: SearchItemFromList list: +decompress_file_1 query: '5GHz帯アマチュア.csv'
