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

如何自动抓取Microsoft Forms问卷数据并每日同步更新至Excel?

Microsoft Forms 每日自动同步全量响应到Excel 实现方案

你可以根据自己的技术习惯选下面任意一种方案,都能完全替代手动点「在Excel中打开」的操作,同步结果和手动导出的结构完全一致:
Forms表单响应页面效果
手动导出的Excel结果样例

  • 零代码官方原生方案(最稳定,零维护成本)
    不要用独立创建的Forms,直接在OneDrive/SharePoint里存放目标Excel的路径下新建表单,或者把现有表单的响应同步到对应SharePoint列表,之后所有新提交的响应会实时自动写入关联的Excel文件,完全不需要手动导出。如果要做每日快照,直接给文件加个每日自动复制备份的规则就行。

  • Python 自定义脚本方案(灵活度最高)
    不用做网页模拟点击,直接调用官方Microsoft Graph API拉取数据,不会因为页面改版失效:

    1. 先在Azure AD后台注册一个应用,开通Forms.Read.All应用权限,拿到租户ID、客户端ID、客户端密钥,从表单URL里提取目标表单的FORM_ID
    2. 核心同步代码参考:
    import pandas as pd
    from azure.identity import ClientSecretCredential
    import requests
    
    # 替换成你自己的配置信息
    TENANT_ID = ""
    CLIENT_ID = ""
    CLIENT_SECRET = ""
    FORM_ID = ""
    
    # 获取接口访问凭证
    cred = ClientSecretCredential(TENANT_ID, CLIENT_ID, CLIENT_SECRET)
    token = cred.get_token("https://graph.microsoft.com/.default").token
    headers = {"Authorization": f"Bearer {token}"}
    
    # 分页拉取全量响应,避免数据量太大拉取不全
    all_resp = []
    next_url = f"https://graph.microsoft.com/v1.0/forms/forms('{FORM_ID}')/responses?$expand=answers"
    while next_url:
        res = requests.get(next_url, headers=headers).json()
        all_resp.extend(res["value"])
        next_url = res.get("@odata.nextLink")
    
    # 简单做下字段解析,对齐手动导出的列结构:第一列是响应ID、提交时间,后面依次是每个问题的回答
    # 解析完直接写入Excel
    output_df = parse_form_responses(all_resp) # 按自己的问卷结构写映射逻辑即可
    output_df.to_excel("问卷全量响应_每日同步.xlsx", index=False)
    
    1. 脚本写完直接用Windows任务计划、Linux crontab设成每天固定时间运行就行,每次都是拉取截止运行时刻的全量数据,和手动点导出的结果完全一致。
  • R 脚本方案
    逻辑和Python版本完全一致,用AzureGraph包调用同一个Graph API即可,核心代码参考:

    library(AzureGraph)
    library(writexl)
    
    # 接口认证
    graph_conn <- create_graph_login(
      tenant = "你的租户ID",
      app = "你的客户端ID",
      password = "你的客户端密钥"
    )
    
    # 拉取全量响应
    resp_raw <- graph_conn$call_graph_endpoint(
      paste0("v1.0/forms/forms('", FORM_ID, "')/responses?$expand=answers")
    )
    
    # 解析响应为数据框,对齐手动导出的列结构后写入Excel
    parsed_df <- parse_resp_to_df(resp_raw)
    write_xlsx(parsed_df, "问卷全量响应_每日同步.xlsx")
    

    定时调度同样用系统自带的定时任务工具即可,不需要额外依赖第三方服务。

  • 低代码Power Automate方案
    不想写代码的话直接用微软自带的Power Automate就行,新建一个定时云流,触发频率设为每日1次,依次添加「列出表单响应」「获取响应详情」「写入Excel Online」的连接器,配置好目标Excel的路径和列映射,保存之后就会自动按天跑,不需要自己维护服务器或者脚本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:21:40