拉取过去3小时信封列表异常:脚本为何拉取全天数据?
问题排查与修复方案
核心问题分析
你的脚本存在两个关键问题,导致无法正确过滤过去3小时的Completed信封:
- 日期格式使用了12小时制的
hh,会导致时间戳解析错误,比如下午时段的时间会被识别为上午,扩大了时间范围; - API参数大小写不匹配:DocuSign API的状态参数是小写
status,且状态值需用小写completed,大写参数会被API忽略,导致过滤条件失效。
修复步骤
- 修正日期格式化规则
把hh改为HH(24小时制),同时确保T大写以符合ISO 8601标准,生成准确的时间戳:
$fromDate = ((Get-Date).AddHours(-3)).ToString("yyyy-MM-ddTHH:mm:ssK")
- 修正API参数大小写
将Status改为小写status,状态值Completed改为completed,确保API能识别过滤条件:
-Body @{ "from_date" = $fromDate; "status" = "completed" }
- 增加错误调试(可选)
添加错误捕获块,方便排查API调用时的异常(如权限、地址错误等):
catch { Write-Error "API调用失败:$_" }
完整修正后的脚本
$fromDate = ((Get-Date).AddHours(-3)).ToString("yyyy-MM-ddTHH:mm:ssK") Write-Host $fromDate try{ $(Invoke-RestMethod ` -Uri "${apiUri}/v2.1/accounts/${accountId}/envelopes" ` -Method 'GET' ` -Headers @{ 'Authorization' = "Bearer $accessToken"; 'Content-Type' = "application/json"; } ` -Body @{ "from_date" = $fromDate; "status" = "completed" }).envelopes | Select-Object -ExpandProperty envelopeId | Out-File -FilePath .\envelopes.txt } catch { Write-Error "API调用失败:$_" }
内容的提问来源于stack exchange,提问作者Graham Bowers
相关产品推荐
相关产品推荐

