テーブルデータ(二次元配列)にフィルターをかける/並び替える
この記事では、ConvertTableアクション(テーブルデータ(二次元配列)を変換)を紹介します。
主に以下の形で使用します
・スプレッドシートから取得した値やCSV(二次元配列)から、条件を満たす行のみを抽出する
・スクレイピングで取得した値(二次元配列)から任意の列を削除する
・各種広告系アクションで取得した値やCSV(二次元配列)の列順を並べ替える
・CSVやスクレイピングしたテーブルデータから、必要な行のみを抽出し、かつ、不要な列を削除する
・行の順番を昇順/降順で並び替える(ソート)
ConvertTable(テーブルデータ(二次元配列)を変換)
ConvertTable(テーブルデータ(二次元配列)を変換)アクションでは、二次元配列に対して以下の操作が可能です。
- 条件を満たす行のみを抽出する(フィルター)
- 行の順番を並び替える(ソート)
- 任意の列を削除する
- 列順を並び替える
- 1~4の操作を組み合わせた操作
この記事では、これらの方法を順に紹介します。
二次元配列をアウトプットするアクションは以下が存在します。
よって、ConvertTableアクションでは、これらのアクションのアウトプットから行抽出/列削除/列順並び替えの操作が可能です。
- ExtractDataFromTable(テーブルデータを取得)
- ExtractData(ページからデータを抽出)
- RunScript(スクリプトを実行, スクリプトの内容次第で二次元配列を出力可能)
- ConvertTable(このアクション)
- ConvertJSONToArray(JSONを配列に変換)
- CompareTable(テーブルを比較する)
- ReadCSV(CSVを読み込む)
- スプレッドシート/Excelから値を取得するタイプのアクション(GetRange,GetCells,GetWorksheetCellsなど)
- GetTwitterAdsReport(returnArrayパラメータをTrueとした場合)
- GetAppleSearchAdsReport(returnArrayパラメータをTrueとした場合)
- Marketing系アクション(各種広告のレポート出力系アクション)のアウトプットをConvertJSONToArrayで加工した値
条件を満たす行を抽出する
以下のケースを想定し、条件を満たす行を抽出する方法を紹介します。
スクレイピングで取得した二次元配列から、2列目が「福井」の情報のみを抽出する
- NAND(否定論理積)で代替する
- スプレッドシート/ExcelのFilter関数を使用する
- JavaSciprtを使用する filter()やreduce()など
NAND(否定論理積)について…
例えば、ある列の値がA,B,C,Dの4つのみを取る時、その列の値が「A または Bのどちらかに一致する」というOR条件を設定したい場合は、「Cと一致しない かつ Dと一致しない」といった形(否定論理積)で条件を指定する必要があります。変換元のテーブルデータがログ画面で以下のように表示されている場合、データ量が多いためピッカー(スパナ状のアイコン)が使用できなくなります。
サイズ上限を超えたため、payloadを表示することができません。
変換元テーブルの範囲を縮小し、ピッカーを選択できるようにしてから、ポップアップ内の設定で範囲を広げる方法をご検討ください。
①表計算ソフトから範囲を指定する場合
GetCellsやReadRange等で取得する範囲の指定を縮小してください。
また、下記②-(a)で紹介している方法も使用できます。
②Web上のテーブルを取得する場合
ExtractDataFromTable等でwebから取得したテーブルデータは任意の範囲を指定できないため、加工が必要になります。以下いずれかの方法で調整をお試しください。
(a)RunScriptで調整する
スクリプトでslice()を使用し、任意の範囲だけを抽出する方法です。
取得したテーブルデータをStoreValueアクションで変数に保存しておきます。
その後、RunScriptアクションで以下のように記述します。
return 変数名.slice(開始位置, 終了位置);
「変数名」には設定した変数をそのまま記載します。
「開始位置, 終了位置」は、インデックス番号で指定します。0始まりの行数になることにご注意ください。
(b)AUTORO Assistantでデータを出力する
拡張機能AUTORO AssistantのExtractData機能を使って任意の範囲を抽出する方法です。
この時点で、データがサイズ上限を超えないよう調整して抽出します。また、出力形式はcsvとご設定ください(デフォルトでcsvになっています)。
詳しい設定方法はAUTORO Assistantでデータを抽出の記事をご参照ください。
# ブラウザを開く +open_browser_1: action>: OpenBrowser url: 'https://www.bunka.go.jp/seisaku/bunkazai/shokai/hozonchiku/judenken_ichiran.html' lang: 'ja-JP' headless: true useShadowDomSelector: false # テーブルデータを取得 +extract_data_from_table_1: action>: ExtractDataFromTable browser: +open_browser_1 selector: table ignoreError: true # テーブルデータ(二次元配列)を変換 +convert_table_1: action>: ConvertTable header: true table: +extract_data_from_table_1 transform: [{"type":"filter","column":"都道府県","operator":"==","operand":"福井","include_blank":false}]
行順を並び替える(昇順・降順)
# ブラウザを開く +open_browser_1: action>: OpenBrowser url: 'https://www.bunka.go.jp/seisaku/bunkazai/shokai/hozonchiku/judenken_ichiran.html' lang: 'ja-JP' headless: true useShadowDomSelector: false # テーブルデータを取得 +extract_data_from_table_1: action>: ExtractDataFromTable browser: +open_browser_1 selector: table ignoreError: true # テーブルデータ(二次元配列)を変換 +convert_table_1: action>: ConvertTable header: true table: +extract_data_from_table_1 transform: [{"type":"sortColumn","map":{"0":0,"1":2,"2":3,"3":1,"4":4,"5":5,"6":6}}]
任意の列を削除する
次に、任意の列を削除する方法を紹介します。
上述の「条件を満たす行を抽出する」のスクレイピングで取得したテーブルデータ(二次元配列)から、選定年月日,面積(ha)の2列を削除してみます。
# ブラウザを開く +open_browser_1: action>: OpenBrowser url: 'https://www.bunka.go.jp/seisaku/bunkazai/shokai/hozonchiku/judenken_ichiran.html' lang: 'ja-JP' headless: true useShadowDomSelector: false # テーブルデータを取得 +extract_data_from_table_1: action>: ExtractDataFromTable browser: +open_browser_1 selector: table ignoreError: true # テーブルデータ(二次元配列)を変換 +convert_table_1: action>: ConvertTable header: true table: +extract_data_from_table_1 transform: [{"type":"filter","column":"都道府県","operator":"==","operand":"福井","include_blank":false},{"type":"column","columns":{"番号":"番号","都道府県":"都道府県","地区名称等":"地区名称等","種別":"種別","選定基準":"選定基準"}}]
列順を並び替える
次に、列の順番を並び替える方法を紹介します。
上述の「条件を満たす行を抽出する」のスクレイピングで取得したテーブルデータ(二次元配列)から、種別列を2列目(都道府県列の左隣)に移動してみます。
- ConvertTableのtransform欄の右端にある黒いスパナ状ボタンをクリックします。
- ドラッグアンドドロップで都道府県列を種別列の左隣に移動します。
# URL上のファイルを取得 +download_file_1: action>: DownloadFile url: 'https://support.autoro.io/wp-content/uploads/2023/11/sample_Le_Corbusier.csv' private: false # CSVを読み込む +read_c_s_v_1: action>: ReadCSV filename: +download_file_1 headers: true private: false # テーブルデータ(二次元配列)を変換 +convert_table_1: action>: ConvertTable header: true table: +read_c_s_v_1 transform: [{"type":"sort","column":"竣工年等","order":"ASC"}] private: false
transformを直接指定する
ここまでの紹介で登場したConvertTableアクション付属のプレビュー画面を使用せずに、ConvertTableのtransformパラメータを直接編集することによっても、テーブルデータの変換操作が可能です。
transformパラメータの詳細な記述方法は、AUTORO公式ドキュメントをご参照ください。