Hướng dẫn python outlook calendar automation - tự động hóa lịch triển vọng python

Ảnh bằng cách tìm thấy Dan | Dan Grinwis trên Unplash

(Vì cuộc sống quá ngắn để lãng phí nó vào các công việc thủ công)

Bài đăng này sẽ hướng dẫn bạn trích xuất các thuộc tính cụ thể của các mục lịch được lưu trữ trong Outlook, nhóm chúng theo ngày và tải xuống kết quả vào tệp .csv.his post will guide you to extract specific attributes of calendar entries stored in Outlook, group them by date and download the result to a .csv file.

Dự án hiện tại của tôi yêu cầu chúng tôi phải tính đến những cuộc họp chúng tôi tham dự mỗi ngày và tôi sử dụng mã này để giúp tôi chuẩn bị bảng thời gian dự án của mình. Có lẽ nó cũng giúp bạn.

Tôi sẽ chỉ cho bạn cách làm như sau:

  1. Sử dụng win32com. Client để truy cập lịch Outlook địa phương của bạn
  2. Lọc bộ sưu tập các cuộc hẹn đến một phạm vi ngày được chỉ định
  3. Trích xuất các thuộc tính cụ thể
  4. Nhóm kết quả theo ngày
  5. Lưu vào tệp .csv

(TLDR: Xem phần cuối cho danh sách mã đầy đủ)TLDR: see the end for the full code list)

Tôi đã thắng giải thích cách làm như sau (có những trang web tốt hơn cho điều đó):

  1. Thiết lập Python
  2. Cài đặt bất kỳ phần mềm nào

Bước 1 - Win32com.Client và Python

Đầu tiên: Fun lên một phiên bản Notebook/phòng thí nghiệm Jupyter mới. Tôi thích phòng thí nghiệm Jupyter như bạn sẽ thấy từ ảnh chụp màn hình của tôi. Thiết lập các cuộc gọi thư viện:: Fire up a new Jupyter Notebook/Lab session. I prefer Jupyter Lab as you’ll see from my screenshots. Set up the library calls:

Thư viện cần thiết trong cuốn sổ này

Thứ hai: Thêm mã sau vào ô mới trong sổ ghi chép Jupyter của bạn:: Add the following code to a new cell in your Jupyter Notebook:

# Step 1, block 1 : access Outlook and get events from the calendar
Outlook = win32com.client.Dispatch(“Outlook.Application”)
ns = Outlook.GetNamespace(“MAPI”)
appts = ns.GetDefaultFolder(9).Items
# Step 1, block 2 : sort events by occurrence and include recurring events
appts.Sort(“[Start]”)
appts.IncludeRecurrences = “True”

Trong mã trên:

  1. Tôi đặt một biến có tên Outlook thành ứng dụng Windows Outlook, thông qua mô -đun Win32com.Client (Shoutout khổng lồ với Mark Hammond). Sau đó, chúng tôi đặt biến NS thành không gian tên MAPI. Cuối cùng, chúng tôi tìm nạp thư mục Outlook lịch của người dùng đã đăng nhập và gán tham chiếu đến các ứng dụng biến.Mark Hammond). Then we set variable ns to the MAPI namespace. Finally we fetch the calendar Outlook folderof the user who is logged on and assign a reference to the variable appts.
  2. Sau đó, tôi sắp xếp thư mục các cuộc hẹn vào ngày bắt đầu và đặt cờ để bao gồm các sự kiện định kỳ.

Bước 2 Cuộc hẹn lọc vào phạm vi ngày

Thêm mã sau vào một ô mới trong sổ ghi chép Jupyter của bạn:

# Step 2, block 1 : filter to the range: from = (today — 10), to = (today)
end = date.today().strftime(“%m/%d/%Y”)
begin = date.today() — datetime.timedelta(days=10)
begin = begin.strftime(“%m/%d/%Y”)
appts = appts.Restrict(“[Start] >= ‘“ +begin+ “‘ AND [END] <= ‘“ +end+ “‘“)

Trong mã trên:

  1. Tôi đặt một biến có tên Outlook thành ứng dụng Windows Outlook, thông qua mô -đun Win32com.Client (Shoutout khổng lồ với Mark Hammond). Sau đó, chúng tôi đặt biến NS thành không gian tên MAPI. Cuối cùng, chúng tôi tìm nạp thư mục Outlook lịch của người dùng đã đăng nhập và gán tham chiếu đến các ứng dụng biến.

Sau đó, tôi sắp xếp thư mục các cuộc hẹn vào ngày bắt đầu và đặt cờ để bao gồm các sự kiện định kỳ.

Thêm mã sau vào một ô mới trong sổ ghi chép Jupyter của bạn:

# Step 3, block 1 create list of excluded meeting subjects
excluded_subjects=(‘’, ‘’,
’, ‘’)
# Step 3, block 2 : populate dictionary of meetings
apptDict = {}
item = 0
for indx, a in enumerate(appts):
subject = str(a.Subject)
if subject in (excluded_subjects):
continue
else:
organizer = str(a.Organizer)
meetingDate = str(a.Start)
date = parse(meetingDate).date()
subject = str(a.Subject)
duration = str(a.duration)
apptDict[item] = {“Duration”: duration, “Organizer”: organizer, “Subject”: subject, “Date”: date.strftime(“%m/%d/%Y”)}
item = item + 1

Trong mã trên:

  1. Tôi đặt một biến có tên Outlook thành ứng dụng Windows Outlook, thông qua mô -đun Win32com.Client (Shoutout khổng lồ với Mark Hammond). Sau đó, chúng tôi đặt biến NS thành không gian tên MAPI. Cuối cùng, chúng tôi tìm nạp thư mục Outlook lịch của người dùng đã đăng nhập và gán tham chiếu đến các ứng dụng biến.
  2. Sau đó, tôi sắp xếp thư mục các cuộc hẹn vào ngày bắt đầu và đặt cờ để bao gồm các sự kiện định kỳ.

Bước 2 Cuộc hẹn lọc vào phạm vi ngày

Thêm mã sau vào một ô mới trong sổ ghi chép Jupyter của bạn:

# Step 4, block 1 : convert discretionary to dataframe and group_by Date
apt_df = pd.DataFrame.from_dict(apptDict, orient=’index’, columns = [‘Duration’, ‘Organizer’, ‘Subject’, ‘Date’])
apt_df = apt_df.set_index(‘Date’)
apt_df[‘Meetings’] = apt_df[[‘Duration’, ‘Organizer’, ‘Subject’]].agg(‘ | ‘.join, axis=1)
grouped_apt_df = apt_df.groupby(‘Date’).agg({‘Meetings’:’, ‘.join})
grouped_apt_df.index = pd.to_datetime(grouped_apt_df.index)
grouped_apt_df.sort_index()

Trong mã trên:

  1. Tôi đặt một biến có tên Outlook thành ứng dụng Windows Outlook, thông qua mô -đun Win32com.Client (Shoutout khổng lồ với Mark Hammond). Sau đó, chúng tôi đặt biến NS thành không gian tên MAPI. Cuối cùng, chúng tôi tìm nạp thư mục Outlook lịch của người dùng đã đăng nhập và gán tham chiếu đến các ứng dụng biến.

Sau đó, tôi sắp xếp thư mục các cuộc hẹn vào ngày bắt đầu và đặt cờ để bao gồm các sự kiện định kỳ.

Thêm mã sau vào một ô mới trong sổ ghi chép Jupyter của bạn:

# Step 5, block 1: add timestamp to filename and save
filename = date.today().strftime(“%Y%m%d”) + ‘_10day_meeting_list.csv’
grouped_apt_df.to_csv (filename, index = True, header=True)

Trong mã trên:

  1. Tôi đặt một biến có tên Outlook thành ứng dụng Windows Outlook, thông qua mô -đun Win32com.Client (Shoutout khổng lồ với Mark Hammond). Sau đó, chúng tôi đặt biến NS thành không gian tên MAPI. Cuối cùng, chúng tôi tìm nạp thư mục Outlook lịch của người dùng đã đăng nhập và gán tham chiếu đến các ứng dụng biến.

Sau đó, tôi sắp xếp thư mục các cuộc hẹn vào ngày bắt đầu và đặt cờ để bao gồm các sự kiện định kỳ.win32com.client to access the Outlook application, extract elements of the appointments in the calendar collection and save those to a DataFrame. Finally we saved our output to a .csv file.

Bước 2 Cuộc hẹn lọc vào phạm vi ngày

Thêm mã sau vào một ô mới trong sổ ghi chép Jupyter của bạn:

Tôi đặt biến kết thúc thành ngày hôm nay trong định dạng DD/mm/yyyy. Sau đó chỉ định biến bắt đầu cho một ngày bù ngày trước 10 ngày trước khi kết thúc và định dạng theo cùng một cách.

Bước 3 - Trích xuất các thuộc tính cụ thể