-
-
Save hdary85/fecc16d92597a3cd67fa5b75df4b8e3f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import win32com.client | |
import pandas as pd | |
import io | |
from datetime import datetime | |
# Connect to Outlook | |
outlook = win32com.client.Dispatch("Outlook.Application") | |
namespace = outlook.GetNamespace("MAPI") | |
# Recherche du dossier principal par son nom | |
main_folder_name = "NomDuDossierPrincipal" # Remplacez "NomDuDossierPrincipal" par le nom du dossier principal | |
main_folder = None | |
for folder in namespace.Folders: | |
if folder.Name == main_folder_name: | |
main_folder = folder | |
break | |
if main_folder: | |
# Vous avez trouvé le dossier principal, vous pouvez maintenant y accéder. | |
# Recherche du premier sous-dossier par son nom | |
first_sub_folder_name = "NomDuPremierSousDossier" # Remplacez "NomDuPremierSousDossier" par le nom du premier sous-dossier | |
first_sub_folder = None | |
for folder in main_folder.Folders: | |
if folder.Name == first_sub_folder_name: | |
first_sub_folder = folder | |
break | |
if first_sub_folder: | |
# Vous avez trouvé le premier sous-dossier, vous pouvez maintenant y accéder. | |
# Recherche du deuxième sous-dossier par son nom | |
second_sub_folder_name = "NomDuDeuxiemeSousDossier" # Remplacez "NomDuDeuxiemeSousDossier" par le nom du deuxième sous-dossier | |
second_sub_folder = None | |
for folder in first_sub_folder.Folders: | |
if folder.Name == second_sub_folder_name: | |
second_sub_folder = folder | |
break | |
if second_sub_folder: | |
# Vous avez trouvé le deuxième sous-dossier, vous pouvez maintenant y accéder | |
dataframes = [] | |
# Define the date range for filtering emails | |
start_date = datetime(2023, 1, 1) # Replace with your start date | |
end_date = datetime(2023, 12, 31) # Replace with your end date | |
# Define the date format for the Restrict method | |
date_format = "%Y-%m-%d" | |
# Format the start and end dates | |
start_date_str = start_date.strftime(date_format) | |
end_date_str = end_date.strftime(date_format) | |
# Filter emails based on received time | |
filter_str = f"[ReceivedTime] >= '{start_date_str}' AND [ReceivedTime] <= '{end_date_str}'" | |
filtered_emails = second_sub_folder.Items.Restrict(filter_str) | |
# Itérer à travers les filtered_emails | |
for email in filtered_emails: | |
for attachment in email.Attachments: | |
if attachment.FileName.endswith(".csv"): | |
attachment_data = attachment.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x37010102") | |
attachment_data = attachment_data.encode("utf-8") | |
attachment_data = io.BytesIO(attachment_data) | |
# Read the CSV content into a DataFrame | |
df = pd.read_csv(attachment_data) | |
dataframes.append(df) | |
# Print sender, subject, and received time for each email | |
print(f"Sender: {email.SenderName}") | |
print(f"Subject: {email.Subject}") | |
print(f"Received Time: {email.ReceivedTime}") | |
# Concatenate all DataFrames into one | |
combined_df = pd.concat(dataframes, ignore_index=True) | |
# Now you have the combined DataFrame for emails received within the specified date range. | |
print(combined_df) | |
else: | |
print(f"Deuxième sous-dossier '{second_sub_folder_name}' non trouvé dans '{first_sub_folder_name}'.") | |
else: | |
print(f"Premier sous-dossier '{first_sub_folder_name}' non trouvé dans '{main_folder_name}'.") | |
else: | |
print(f"Dossier principal '{main_folder_name}' non trouvé dans Outlook.") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import win32com.client | |
import pandas as pd | |
import io | |
from datetime import datetime | |
# Connect to Outlook | |
outlook = win32com.client.Dispatch("Outlook.Application") | |
namespace = outlook.GetNamespace("MAPI") | |
# Recherche du dossier principal par son nom | |
main_folder_name = "NomDuDossierPrincipal" # Remplacez "NomDuDossierPrincipal" par le nom du dossier principal | |
main_folder = None | |
for folder in namespace.Folders: | |
if folder.Name == main_folder_name: | |
main_folder = folder | |
break | |
if main_folder: | |
# Vous avez trouvé le dossier principal, vous pouvez maintenant y accéder. | |
# Recherche du premier sous-dossier par son nom | |
first_sub_folder_name = "NomDuPremierSousDossier" # Remplacez "NomDuPremierSousDossier" par le nom du premier sous-dossier | |
first_sub_folder = None | |
for folder in main_folder.Folders: | |
if folder.Name == first_sub_folder_name: | |
first_sub_folder = folder | |
break | |
if first_sub_folder: | |
# Vous avez trouvé le premier sous-dossier, vous pouvez maintenant y accéder. | |
# Recherche du deuxième sous-dossier par son nom | |
second_sub_folder_name = "NomDuDeuxiemeSousDossier" # Remplacez "NomDuDeuxiemeSousDossier" par le nom du deuxième sous-dossier | |
second_sub_folder = None | |
for folder in first_sub_folder.Folders: | |
if folder.Name == second_sub_folder_name: | |
second_sub_folder = folder | |
break | |
if second_sub_folder: | |
# Vous avez trouvé le deuxième sous-dossier, vous pouvez maintenant y accéder | |
dataframes = [] | |
# Define the date range for filtering emails | |
start_date = datetime(2023, 1, 1) # Replace with your start date | |
end_date = datetime(2023, 12, 31) # Replace with your end date | |
# Define the date format for the Restrict method | |
date_format = "%Y-%m-%d" | |
# Format the start and end dates | |
start_date_str = start_date.strftime(date_format) | |
end_date_str = end_date.strftime(date_format) | |
# Filter emails based on received time | |
filter_str = f"[ReceivedTime] >= '{start_date_str}' AND [ReceivedTime] <= '{end_date_str}'" | |
filtered_emails = second_sub_folder.Items.Restrict(filter_str) | |
# Itérer à travers les filtered_emails | |
for email in filtered_emails: | |
if email.Attachments.Count > 0: | |
for attachment in email.Attachments: | |
if attachment.FileName.endswith(".csv"): | |
attachment_content = attachment.Content | |
attachment_data = io.StringIO(attachment_content) | |
df = pd.read_csv(attachment_data) | |
dataframes.append(df) | |
# Print sender, subject, and received time for each email | |
print(f"Sender: {email.SenderName}") | |
print(f"Subject: {email.Subject}") | |
print(f"Received Time: {email.ReceivedTime}") | |
# Concatenate all DataFrames into one | |
combined_df = pd.concat(dataframes, ignore_index=True) | |
# Now you have the combined DataFrame for emails received within the specified date range. | |
print(combined_df) | |
else: | |
print(f"Deuxième sous-dossier '{second_sub_folder_name}' non trouvé dans '{first_sub_folder_name}'.") | |
else: | |
print(f"Premier sous-dossier '{first_sub_folder_name}' non trouvé dans '{main_folder_name}'.") | |
else: | |
print(f"Dossier principal '{main_folder_name}' non trouvé dans Outlook.") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment