[Excel은 메일 검색 GUI로 02 사용] PowerShell에서 csv로 Outlook의 메일 항목 일람을 토하고 PowerQuery가 먹도록 합니다.
12398 단어 PowerShell
속성 변경
受信者名 = $oItem.To
BOX 보내기 주기 추가하기
상용하는 상수는 다음과 같다
상수
값
컨텐트
olFolderInbox
6
수신 트레이
olFolderSentMail
5
발송된 트레이
olFolderDeletedItems
3
트레이가 삭제됨
olFolderDrafts
16
초안
olFolderJunk
23
스팸 메일
폴더 색인 정렬 만들기
$arr_oFolders = @(5,6)
$oFolder에 배열 요소를 하나씩 저장하고 순환하는 프레임워크를 이전 코드에 추가# $ary_namesの要素を 1 つずつ $oFolder に格納してループする
for($fld = 0; $fld -lt $arr_oFolders.Count; $fld++){
$oFolder = $oNamespace.GetDefaultFolder($arr_oFolders[$fld])
첨부 파일 가져오기 이름 목록 추가마지막으로 (첨부 파일 수) CSV의 [첨부 파일 수] 열을 직접 입력합니다.
$oItem.Attachments.Count
순환 항목을 추가하고 문자열에 파일 이름을 미리 처리합니다.# 添付ファイルリストを取得
$attList=""
foreach($att in $oItem.Attachments){
$attList += ";" + $att.FileName
}
속성 변경$oItem.Attachments
受信者名 = $oItem.To
라면 자신을 제외하고는 모두 공백ReceivedByName
이다.코드
# Outlookのフォルダからメール一覧を作成、CSVに吐き出す
# 参考(Outlook取得):https://www.itlab51.com/?p=6171
# 参考(CSV出力):https://use-computer.net/powershell/powershell-course-5
# 参考(列挙型):https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_enum?view=powershell-7.2
$oOutlook = New-Object -ComObject Outlook.Application
$oNamespace = $oOutlook.GetNamespace("MAPI")
# フォルダIndexの配列を作成
$arr_oFolders = @(5,6)
#$olFolderInbox = 6 #受信トレイ
#$olFolderSentMail = 5 #送信済みトレイ
# ループ回数の上限を設定(CSVに書き出すメール数)
$LimLoopCnt=10000
# 取得する文字数に制限をかける
$LimLenStr=10000
# 変数の初期化
$CsvData = @()
$rr=0
# $ary_namesの要素を 1 つずつ $oFolder に格納してループする
for($fld = 0; $fld -lt $arr_oFolders.Count; $fld++){
$oFolder = $oNamespace.GetDefaultFolder($arr_oFolders[$fld])
# $oFolder内の全アイテムを巡回して1レコードずつCSV出力用の変数に格納していく
foreach($oItem in $oFolder.Items){
# 取得する文字数に制限をかける(文字数が多すぎるとセルをはみ出してテーブル構造が崩れるため)
$Str = $oItem.Body
$LenStr = ($oItem.Body).Length
if ( $LenStr -gt $LimLenStr)
{$Str = $Str.Substring(0,$LimLenStr)}
# 添付ファイルリストを取得
$attList=""
foreach($att in $oItem.Attachments){
$attList += ";" + $att.FileName
}
# 1レコードずつCSV用の変数につぎ足していく
$CsvData += [PSCustomObject]@{
No = $rr+1 # 0始まりのため出力は1始まりにする
件名 = $oItem.Subject
本文 = $Str.Replace("`r`n","") #改行殺し
受信日時 = $oItem.ReceivedTime
受信者名 =$oItem.To #ReceivedByNameだと自分以外が空白になる
送信者名 =$oItem.SenderName
CC = $oItem.CC
ConversationID = $oItem.ConversationID
添付ファイル = $attList
}
# ループ脱出
$rr = $rr + 1
if( $rr -gt $LimLoopCnt){break}
}
}
# CSVに吐き出す
$CsvData | ft -AutoSize
$CsvData | Export-Csv "ol_受信BOX_Itmes.csv" -Encoding Default
남은 과제Access 맛 좀 보고 싶어요.
현재 CSV가 이대로 가면, 코드가 엉망이거나 표의 첫 번째 줄의 여분의 문자열이 아니면 방해가 되어 직접 가져올 수 없습니다.
Access로 처리해야 할지도 몰랐는데...
창에 선택한 기록 보이기
이거 아직 안 됐어요.
엑셀 사용자 형태 제작법보다 엑세스 형식이 편하기 때문에 엑세스를 쓸 수 있다면 그걸 하고 싶어요.
테이블의 구성이 바뀔 수도 있기 때문에 표현 방법이 마지막에도 가능하다는 경우도 있다.
Reference
이 문제에 관하여([Excel은 메일 검색 GUI로 02 사용] PowerShell에서 csv로 Outlook의 메일 항목 일람을 토하고 PowerQuery가 먹도록 합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/taleau/items/6dd52229719cb1a7efc8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)