Add CalenderExport.py
This commit is contained in:
@@ -0,0 +1,65 @@
|
|||||||
|
import requests
|
||||||
|
import pandas as pd
|
||||||
|
from msal import ConfidentialClientApplication
|
||||||
|
|
||||||
|
# Replace with your values
|
||||||
|
CLIENT_ID = "2a1cb9f1-2c0c-46ad-9887-fd2bb835bc2e"
|
||||||
|
CLIENT_SECRET = "8fH8Q~RAzS0Q8dG.PEBtb~twd6Nh5Bwp2_o1idzx"
|
||||||
|
AUTHORITY = "https://login.microsoftonline.com/40f52dd9-93f5-4e52-b871-652ef67bb0d0"
|
||||||
|
SCOPES = ["https://graph.microsoft.com/.default"]
|
||||||
|
|
||||||
|
app = ConfidentialClientApplication(
|
||||||
|
CLIENT_ID,
|
||||||
|
authority=AUTHORITY,
|
||||||
|
client_credential=CLIENT_SECRET
|
||||||
|
)
|
||||||
|
|
||||||
|
result = app.acquire_token_for_client(scopes=SCOPES)
|
||||||
|
access_token = result.get("access_token")
|
||||||
|
|
||||||
|
if access_token:
|
||||||
|
# Example: Get user ID for a given email
|
||||||
|
headers = {"Authorization": f"Bearer {access_token}"}
|
||||||
|
|
||||||
|
url = "https://graph.microsoft.com/v1.0/users"
|
||||||
|
response = requests.get(url, headers=headers).json()
|
||||||
|
print(response)
|
||||||
|
|
||||||
|
email = "zisco@zisco.at"
|
||||||
|
url = f"https://graph.microsoft.com/v1.0/users/{email}"
|
||||||
|
|
||||||
|
response = requests.get(url, headers=headers).json()
|
||||||
|
user_id = response.get("id")
|
||||||
|
print("User ID:", user_id)
|
||||||
|
|
||||||
|
user_id = "f92b34ea-a2ea-4a09-b9a8-012988cd4417"
|
||||||
|
user_id = "35bf5591-13f2-4c1a-9d1b-8818eb0eaa43"
|
||||||
|
|
||||||
|
# Get events
|
||||||
|
#headers = {"Authorization": f"Bearer {access_token}"}
|
||||||
|
url = f"https://graph.microsoft.com/v1.0/users/{user_id}/calendar/events?$top=10000"
|
||||||
|
events = []
|
||||||
|
|
||||||
|
while url:
|
||||||
|
res = requests.get(url, headers=headers).json()
|
||||||
|
events.extend(res.get("value", []))
|
||||||
|
url = res.get("@odata.nextLink") # pagination
|
||||||
|
|
||||||
|
# Parse to DataFrame
|
||||||
|
df = pd.DataFrame([{
|
||||||
|
"Subject": e.get("subject"),
|
||||||
|
"Start": e["start"]["dateTime"],
|
||||||
|
"End": e["end"]["dateTime"],
|
||||||
|
"Location": e.get("location", {}).get("displayName"),
|
||||||
|
"Body": e.get("bodyPreview")
|
||||||
|
} for e in events])
|
||||||
|
|
||||||
|
# Save to CSV
|
||||||
|
df.to_csv("outlook_calendar_export.csv", index=False)
|
||||||
|
print("Exported to outlook_calendar_export.csv")
|
||||||
|
else:
|
||||||
|
print("Auth failed:", result.get("error_description"))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#bafad0ef-0e6e-4388-b335-e6a8a373bebd
|
||||||
Reference in New Issue
Block a user