1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
| Const ForReading = 1
Set FSO = CreateObject("Scripting.FileSystemObject")
Set g_oSB = CreateObject("System.Text.StringBuilder")
separateurFichierExportSwapp = "|"
separateurAudioNamesOutput = "_"
'Caractéristiques des fichiers audios: le script doit être placé dans le même répertoire que les fichiers audios
audioPath = FSO.GetParentFolderName(WScript.ScriptFullName)
separateurAudioNamesInput = "#"
audioAcceptedExtensions = "mp3mp4wav"
strLigne1 = "-Ce script doit etre positionne dans un dossier qui contient les enregistrements WCC et le fichier d'export WCC issu du parcours de conformite Swapp."
strLigne2 = "-Les enregistrements WCC doivent commencer par le numero de telephone ainsi que la date/heure de l'appel comme suit: 0645946591"+separateurAudioNamesInput+"202107291550 pour un appel effectue le 29 juillet a 15H50"
strLigne3 = "-Veuillez selectionner le fichier d'export WCC lors de l'etape suivante"
MsgBox strLigne1 & vbcrlf & strLigne2 & vbcrlf & strLigne3 ,64, "Mode d'emploi: renommer les enregistrements WCC"
'Sélection du fichier d'export des ventes Swapp
Set wShell=CreateObject("WScript.Shell")
Set oExec=wShell.Exec("mshta.exe ""about:<input type=file id=FILE><script>FILE.click();new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0);</script>""")
exportSwappFullPath = oExec.StdOut.ReadLine
If exportSwappFullPath <> "" Then
dateMaintenant = now()
maintenant = sprintf("{0:yyyyMMddHHmmss}", Array(dateMaintenant))
'Là ou seront copiés les audios renommées pour Engie
audioPathPourEngie = audioPath & "\Engie" & maintenant & "\"
FSO.CreateFolder(audioPathPourEngie)
Set FLD = FSO.GetFolder(audioPath)
ecrireLigneLog("Transformation des enregistrements WCC le " & dateMaintenant )
ecrireLigneLog("---------------")
'Boucle sur chaque fichier du dossier
For Each fil in FLD.Files
strOldAudioName = fil.Name
strAudioExtension = FSO.GetExtensionName(fil.Path)
'On ne prend que les fichiers mp3 mp4 wav, munis du séparateur pré-défini
If (InStr(strOldAudioName, separateurAudioNamesInput) * InStr(audioAcceptedExtensions, strAudioExtension)) > 0 Then
strFileParts = Split(strOldAudioName, separateurAudioNamesInput)
'Ici on récupère depuis le nom de fichier le numéro de téléphone et la date / heure de l'appel
'Zone à adapter selon le format de fichier produit par l'enregistreur d'appels du partenaire
strTelephone = strFileParts(0)
strTimestampAppel = strFileParts(1)
compteurAssociationDuFichier = 0
compteurFichiersAudioParcourus = compteurFichiersAudioParcourus + 1
'On va rechercher dans le fichier d'export swapp la ou les lignes qui contiennetn le numéro de téléphone extrait du nom de fichier audio
'Si on trouve plusieurs lignes, on créé une copie du fichier audio pour chaque ligne (cas ou le même téléphone sert pour plusieurs ventes)
'Si plusieurs fichiers correspondent au même numéro de téléphone identifié à une vente, chaque fichier sera associé à cette vente
'On exclut les AF
Set objTextFile = FSO.OpenTextFile(exportSwappFullPath, ForReading)
do until objTextFile.AtEndOfStream
strLine = objTextFile.ReadLine()
If InStr(1, strLine, strTelephone) <> 0 then
strTypeEnergie = Split(strLine, separateurFichierExportSwapp)(47)
'Uniquement pour les ventes Energie: G, E, GE
If (InStr("GE", strTypeEnergie) > 0) then
'Récupération de idVente (=premiere colonne)
strIdVente = Split(strLine, separateurFichierExportSwapp)(0)
strNomClient = Split(strLine, separateurFichierExportSwapp)(14)
'Construction du nouveau nom du fichier audio Idvente_timestamp_NomCLient.mp3
strNewName = strIdVente & separateurAudioNamesOutput & strTimestampAppel & separateurAudioNamesOutput & strNomClient & "." & strAudioExtension
'Copie du fichier audio renommé
FSO.CopyFile fil.Path, audioPathPourEngie & strNewName
compteurCopies = compteurCopies + 1
compteurAssociationDuFichier = compteurAssociationDuFichier +1
'Ecriture de la copie dans le log
ecrireLigneLog("Fichier " & fil.Path & " copié dans " & audioPathPourEngie & strNewName)
End If
End If
loop
objTextFile.Close
ecrireLigneLog("Fichier " & fil.Path & " copié " & compteurAssociationDuFichier & " fois car associé à " & compteurAssociationDuFichier & " vente(s)")
ecrireLigneLog("---------------")
If (compteurAssociationDuFichier = 0) then
warning1 = "Attention: Certains enregistrements WCC n'ont pas été associés à une vente Swapp : le numéro de téléphone du fichier audio n'est retrouvé dans aucune vente du fichier d'export Swapp"
ElseIf compteurAssociationDuFichier > 1 then
warning2 = "Attention: Certains enregistrements WCC ont été associés à plusieurs ventes Swapp : le numéro de téléphone du fichier audio est retrouvé dans plusieurs ventes différentes du fichier d'export Swapp"
End If
End If
Next
ecrireLigneLog("Bilan:")
ecrireLigneLog("Transformation de fichiers audio le " & dateMaintenant )
ecrireLigneLog(compteurFichiersAudioParcourus & " fichiers d'enregistrements WCC ont été parcourus")
ecrireLigneLog(compteurCopies & " associations enregistrements WCC / vente Swapp ont été effectuées")
ecrireLigneLog(warning1)
ecrireLigneLog(warning2)
End If
'Cleanup the objects
Set FLD = Nothing
Set FSO = Nothing
Set g_oSB = Nothing
Set oExec = Nothing
Function sprintf(sFmt, aData)
g_oSB.AppendFormat_4 sFmt, (aData)
sprintf = g_oSB.ToString()
g_oSB.Length = 0
End Function
Function ecrireLigneLog(strLigne)
Set logtxt = FSO.OpenTextFile(audioPathPourEngie & maintenant & "log.txt",8,true)
logtxt.WriteLine(strLigne)
logtxt.Close
Set logtxt = Nothing
End Function |
Partager