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

如何用Bash编写IF语句检查SharePoint Online文件存在性

自动判断SharePoint文件夹中的文件并下载(Microsoft Graph API)

要实现自动判断FOLDERX中存在FileA.csv还是FileB.csv,你需要先通过Microsoft Graph API的文件元数据查询接口验证文件是否存在,再执行对应的下载逻辑。具体实现如下:

核心思路

使用Graph API的元数据接口(而非下载接口)检查文件是否存在:

  • 接口地址:https://graph.microsoft.com/v1.0/drives/<driveID>/root:/FOLDERX/FileA.csv
  • 通过curl返回的HTTP状态码判断:返回200表示文件存在,返回404表示文件不存在

完整脚本

#!/bin/bash

# 获取API令牌(保留你原有获取逻辑)
TOKEN=$(<获取API令牌的curl命令>)

# 检查FileA.csv是否存在,仅获取HTTP状态码
FILE_A_STATUS=$(curl -s -o /dev/null -w "%{http_code}" \
  -H "Authorization: Bearer ${TOKEN}" \
  "https://graph.microsoft.com/v1.0/drives/<driveID>/root:/FOLDERX/FileA.csv")

# 根据检查结果执行下载
if [ "${FILE_A_STATUS}" -eq 200 ]; then
    # FileA存在,下载并保存为本地FileA.csv
    curl -L -X GET "https://graph.microsoft.com/v1.0/drives/<driveID>/root:/FOLDERX/FileA.csv:/content" \
      -H "Authorization: Bearer ${TOKEN}" > FileA.csv
else
    # FileA不存在,下载FileB并保存为本地FileA.csv
    curl -L -X GET "https://graph.microsoft.com/v1.0/drives/<driveID>/root:/FOLDERX/FileB.csv:/content" \
      -H "Authorization: Bearer ${TOKEN}" > FileA.csv
fi

关键参数说明

  • -s:静默模式,不输出curl的进度信息
  • -o /dev/null:丢弃接口返回的元数据内容,只保留状态码输出
  • -w "%{http_code}":指定curl仅输出HTTP响应状态码,用于后续判断
  • -eq 200:判断状态码是否为200(文件存在的成功响应)

补充说明

如果需要更严谨的逻辑,可以额外处理令牌过期(状态码401)、服务器错误(5xx)等情况,但基于你描述的API调用正常的前提,上述逻辑已能满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 10:55:17