簡體   English   中英

讀取 Python 中的 Outlook 日歷事件

[英]Reading Outlook calendar events in Python

我需要從個人 Outlook 日歷中獲取當天的事件。 除了微軟的教程( https://docs.microsoft.com/en-us/graph/tutorials/python )之外,我發現幾乎沒有可行的在線資源,但我不想構建 Django 應用程序。 任何人都可以提供一些其他資源嗎?

另外:我看到很多人使用GET <url>命令調用 API。 我一生都無法理解您可以如何或在哪里使用它? 在使用 API 時,我是否遺漏了一些重要的東西?

首先您應該知道,如果您想調用 ms graph api,您需要先獲取訪問令牌並將其添加到請求 header 中,如下圖所示。 我在屏幕截圖中顯示的是創建日歷事件,但它們是相似的。 因此,您無法避免生成令牌。

那么有兩種方法擺在您面前,如果您正在編寫 web 應用程序,那么您可以按照本節找到適合您的示例,如果您正在編寫守護程序應用程序,則意味着您需要使用clientcredentialflow在這里,您可以參考本節

無論如何,無論您使用 SDK 還是發送 http 請求調用 api,都需要選擇合適的流程來獲取訪問令牌。

在此處輸入圖像描述

為此,不使用 Microsoft Graph API 通過 python 中的request ,有一個名為O365 的 PyPI package

通過以下過程,您可以輕松閱讀 Microsoft 日歷:

  1. 安裝 package: pip install O365
  2. 在 Microsoft Azure 控制台中注冊應用程序並保持application (client) id以及client secret本文可以幫助您。
  3. 檢查signInAudience ,它應該是AzureADandPersonalMicrosoftAccount而不是 Microsft Azure Manifest 中的PersonalMicrosoftAccount ,否則,您可以對其進行編輯。
  4. 接下來,您應該將委派權限設置為您想要的范圍,在您的情況下是Calendars.Read 這是我在 Azure 中的配置快照:

在此處輸入圖像描述

現在是時候深入研究代碼了:

from O365 import Account

CLIENT_ID = "xxx"
CLIENT_SECRET = "xxx"

credentials = (CLIENT_ID, CLIENT_SECRET)
scopes = ['Calendars.Read']
account = Account(credentials)

if not account.is_authenticated:
    account.authenticate(scopes=scopes)
    print('Authenticated!')

schedule = account.schedule()
calendar = schedule.get_default_calendar()
events = calendar.get_events(include_recurring=False) 

for event in events:
    print(event)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM