You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python导出Microsoft Tasks Planner数据的更优实现方案咨询

更优实现方案整理
  • 方案1:复用本地Chrome用户配置文件
    不用手动维护Cookie,启动Selenium时直接指定本地Chrome的用户数据目录,启动的浏览器会复用你平时已登录的账号状态,不需要重复输入账号密码和2FA验证码,适配公司的身份验证策略,稳定性比手动存Cookie高。核心启动配置示例:
    from selenium.webdriver.chrome.options import Options
    chrome_options = Options()
    # 替换为你本地Chrome的用户数据路径,Windows默认路径参考如下,按实际情况修改
    chrome_options.add_argument(r"user-data-dir=C:\Users\你的用户名\AppData\Local\Google\Chrome\User Data")
    # 如果要指定用哪个配置文件,加这句,默认是Default
    chrome_options.add_argument("profile-directory=Default")
    driver = webdriver.Chrome(options=chrome_options)
    
  • 方案2:调用Microsoft Graph API实现导出
    完全不用依赖浏览器模拟操作,不会因为微软调整Planner前端页面结构导致代码失效。可以直接调用官方提供的Planner相关接口拉取计划、任务、标签、成员等全量数据,再用pandas自行生成Excel文件,适合长期稳定运行、批量导出的场景,是最优的生产级方案。
  • 方案3:现有Cookie复用方案优化
    如果继续用当前的Cookie方案,可以做以下优化:
    1. 用webdriver-manager自动管理chromedriver版本,不用写死本地路径,避免Chrome更新后驱动不兼容
    2. 替换隐式等待为显式等待,避免页面未加载完成导致元素查找报错
    3. 加密存储Cookie文件,不要明文放在下载目录,降低账号信息泄露风险
原实现参考代码
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import os, time, datetime
import json

def save_cookie(driver, path):
    with open(path, 'w') as filehandler:
        json.dump(driver.get_cookies(), filehandler)

def load_cookie(driver, path):
    with open(path, 'r') as cookiesfile:
        cookies = json.load(cookiesfile)
    for cookie in cookies:
        cookie.pop("domain")
        driver.add_cookie(cookie)

url = "https://tasks.office.com/path/to/planner"
menu_selector = '//button[@title="More. Navigate to other pages related to this plan."]'
save_selector = "Export plan to Excel"

driver = webdriver.Chrome(r"C:\Users\user\AppData\Roaming\Python\Python38\site-packages\chromedriver.exe")

# 先跳转到Cookie所属的域名
driver.get("https://tasks.office.com/")
# 加载本地存储的Cookie
load_cookie(driver, r"C:\Users\user\Downloads\cookies.json")
# 跳转至目标Planner页面
driver.get(url)

authenticated = 'definitive_text_segment_from_url' in driver.current_url

if not authenticated: # Cookie过期时重新登录刷新
    username = input("请输入用户名")
    password = input("请输入密码")

    driver.find_element_by_name("loginfmt").send_keys(username)
    driver.find_element_by_name("loginfmt").send_keys(Keys.RETURN)
    
    driver.find_element_by_name("pf.username").send_keys(username)
    driver.find_element_by_name("pf.pass").send_keys(password)
    driver.find_element_by_name("pf.pass").send_keys(Keys.RETURN)

    authentification_code = input("请输入双重验证验证码")
    
elem = driver.find_element_by_xpath(menu_selector)
elem.click() # 点击更多按钮
elem = driver.find_element_by_name(save_selector)
elem.click() # 点击导出到Excel选项,文件自动保存

# 保存最新的Cookie
save_cookie(driver, r"C:\Users\user\Downloads\cookies.json")

内容的提问来源于stack exchange,提问作者Spencer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 22:36:05