J'ai plus de 100 emails dans un dossier et tous ont une pièce jointe. Je veux créer un paquet qui copiera les données de toutes les pièces jointes d'email dans une feuille d'excel et ajoutera également une colonne qui aura les dates reçues de ces email contre les données. Peut-on me guider comment le faire avec l'aide de ssis paquet.Package ssis Importation de données à partir de pièces jointes d'email pour exceler
Répondre
Non ssis mais cela devrait produire le résultat souhaité. Change juste le chemin sur la dernière ligne.
function Get-Attachment
{
[CmdletBinding()]
Param
(
[Parameter(ParameterSetName="Path", Position=0, Mandatory=$True)]
[String]$Path,
[Parameter(ParameterSetName="LiteralPath", Mandatory=$True)]
[String]$LiteralPath,
[Parameter(ParameterSetName="FileInfo", Mandatory=$True, ValueFromPipeline=$True)]
[System.IO.FileInfo]$Item
)
Begin
{
remove-item $Path\attachments.xlsx
$outlook = New-Object -ComObject Outlook.Application
$excel = New-Object -ComObject Excel.Application
$excel.visible = $true
$workbook = $excel.Workbooks.add()
$s1 = $workbook.Sheets.add()
$s1.name = "Attachments"
$cells= $s1.Cells
$s1.range("A1:A1").font.bold = "true"
$s1.range("A1:A1").cells="RecDate"
$s1.range("B1:B1").cells="Data"
$s1.range("B1:B1").font.bold = "true"
}
Process
{
switch ($PSCmdlet.ParameterSetName)
{
"Path" { $files = Get-ChildItem -Path $Path }
"LiteralPath" { $files = Get-ChildItem -LiteralPath $LiteralPath }
"FileInfo" { $files = $Item }
}
$row=2
$col=2
$files | % {
$msgFn = $_.FullName
if ($msgFn -notlike "*.msg") {
return
}
$msg = $outlook.CreateItemFromTemplate($msgFn)
$rdate = $msg.ReceivedTime
$msg.Attachments | % {
$attFn = $msgFn -replace '\.msg$', " - Attachment - $($_.FileName)"
if (Test-Path -literalPath $attFn) {
return
}
$_.SaveAsFile($attFn)
Get-ChildItem -LiteralPath $attFn
$d = (Get-Content -Path $attFn -Raw)
$cells.item($row,$col)=$d.ToString()
$cells.item($row,1) = $rdate
$row++
}
$s1.range("A1:B1").EntireColumn.autofit() | out-Null
$s1.range("A1:B1").EntireColumn.WrapText = $false | out-Null
}
}
End
{
$workbook.SaveAs("$Path\attachments.xlsx")
}
}
Get-Attachment -Path C:\Users\Administrator\pathtodir\
S'il vous plaît laissez-moi savoir si cela fonctionne pour vous. –
devrait utiliser la tâche de script afin d'exécuter le ci-dessus – brit
Non, utilisez Powershell. –
Il serait plus facile de le faire avec powershell ou vba. Quel est votre serveur de messagerie? –
ces mails sont placés dans le dossier pas sur le serveur de messagerie. – brit
Juste pour clarifier, un dossier dans votre système de fichiers? Quelle est l'extension des documents contenant une pièce jointe? –