様々なデータが含まれたCSVファイルから、リスト内の文字列が含まれる行のみを選択し、その文字列でソートする処理を自動化します。
以前、スクリプト作成の仕事の依頼があったので、その備忘録です。
今回はメールアドレスを対象とします。
1.整形対象データ
例として、メールアドレスが含まれた下記のようなCSVファイルを用意します。
ユーザー名,ユーザーメール,社員番号
鈴木 一郎,hogehoge@xxxx.com,0001
鈴木 二朗,testtest@xxxx.com,0002
木村 一郎,aaaa@xxxx.com,0003
木村 二郎,bbbb@xxxx.com,0004
2.検索に用いるリスト
例として、下記のようなメールアドレスを羅列したファイルを用意します。
hogehoge@xxxx.com
bbbb@xxxx.com
aaaa@xxxx.com
3.PowerShellスクリプト
下記の内容のPowerShellスクリプトを実行します。
ファイルの場所は適宜変更してください。
#ログファイル出力先
$LogFile = “C:\work\Data_Extraction_Mail.log”
Start-Transcript $LogFile
#読み込む検索リストファイル
$SearchFile = “C:\work\MailAddress.csv”
#読み込むデータファイル
$DataFile = “C:\work\Data.csv”
#出力ファイル
$ExportFile = “C:\work\Result_Mail.csv”
#ファイル読み込み
$SearchList = Get-Content $SearchFile -Encoding UTF8
$DataList = Import-Csv $DataFile
#検索リストを基に対象行を抽出
$Extraction = $DataList | Where-Object -FilterScript { $SearchList -contains $_.ユーザーメール }
#抽出した行のソート
$Sort = $Extraction | Sort-Object -Property “メールアドレス”
#抽出リストのエクスポート
$Sort | Export-Csv $ExportFile -Encoding UTF8 -NoTypeInformation
Stop-Transcript
4.エクスポート結果
スクリプトを実行した結果、「$ExportFile」が作成されます。
下記のようにリスト内のメールアドレスが含まれる行、およびメールアドレスでソートされた結果がエクスポートされます。
ユーザー名,ユーザーメール,社員番号
木村 一郎,aaaa@xxxx.com,0003
木村 二郎,bbbb@xxxx.com,0004
鈴木 一郎,hogehoge@xxxx.com,0001
コメント