寻求PowerShell脚本协助:批量创建60个DocuSign模板
批量创建DocuSign模板的PowerShell实现方案
核心结论
完全可以通过Import-CSV读取标题和文件路径来批量生成模板——你的场景里所有模板的字段、收件人、基础签名页结构一致,只需要替换模板标题和签名页后的附加文档,这个方案完全适配。
步骤1:准备CSV配置文件
先整理好包含每个模板信息的CSV(比如命名为TemplateList.csv),格式如下:
TemplateTitle,AttachmentFilePath 合同模板-客户A,C:\Docs\客户A附加文档.pdf 合同模板-客户B,C:\Docs\客户B附加文档.pdf ...
注意:确保AttachmentFilePath指向的文件路径合法且本地可访问。
步骤2:编写PowerShell脚本
以下是可直接复用的脚本框架,你需要根据自己的DocuSign账户信息调整认证参数、基础模板的字段/收件人配置:
# 1. 配置DocuSign核心参数 $apiBaseUrl = "https://demo.docusign.net/restapi" # 生产环境替换为https://www.docusign.net/restapi $accountId = "你的账户ID" $accessToken = "你的API访问令牌" # 2. 定义模板固定配置(字段、收件人、通用签名页) $baseRecipients = @{ signers = @( @{ email = "signer1@example.com" name = "签名人1" recipientId = "1" tabs = @{ signHereTabs = @( @{ documentId = "1" # 对应通用签名页的文档ID pageNumber = "1" xPosition = "100" yPosition = "100" } ) # 可添加其他固定字段(如日期框、文本输入框等) } } ) } # 加载通用签名页并转为Base64 $signPageBytes = [IO.File]::ReadAllBytes("C:\Docs\通用签名页.pdf") $baseDocuments = @( @{ documentId = "1" name = "通用签名页.pdf" fileExtension = "pdf" documentBase64 = [Convert]::ToBase64String($signPageBytes) } ) # 3. 读取CSV并循环创建模板 Import-CSV "TemplateList.csv" | ForEach-Object { $templateTitle = $_.TemplateTitle $attachmentPath = $_.AttachmentFilePath # 处理当前模板的附加文档 $attachmentBytes = [IO.File]::ReadAllBytes($attachmentPath) $attachmentDoc = @{ documentId = "2" name = [IO.Path]::GetFileName($attachmentPath) fileExtension = [IO.Path]::GetExtension($attachmentPath).TrimStart('.') documentBase64 = [Convert]::ToBase64String($attachmentBytes) } # 合并通用签名页和附加文档 $allDocuments = $baseDocuments + $attachmentDoc # 构建API请求体 $requestBody = @{ name = $templateTitle documents = $allDocuments recipients = $baseRecipients status = "created" } | ConvertTo-Json -Depth 10 # 发送创建请求 $headers = @{ "Authorization" = "Bearer $accessToken" "Content-Type" = "application/json" } try { $response = Invoke-RestMethod -Uri "$apiBaseUrl/v2.1/accounts/$accountId/templates" -Method Post -Headers $headers -Body $requestBody Write-Host "模板创建成功:$templateTitle | 模板ID:$($response.templateId)" } catch { Write-Error "创建模板失败 [$templateTitle]:$($_.Exception.Message)" } # 可选:添加延迟避免API频率限制 Start-Sleep -Seconds 2 }
关键注意事项
- 认证安全:如果不想硬编码
accessToken,可改用OAuth2流程获取临时令牌,避免泄露长期令牌。 - 文档ID映射:确保通用签名页的
documentId固定为"1",附加文档用"2",防止固定字段错误映射到附加文档上。 - 字段配置:所有固定字段的
documentId必须指向通用签名页(即documentId="1"),保证字段只出现在签名页。 - 频率限制:DocuSign API有请求频率阈值,若批量创建报错,可调整
Start-Sleep的秒数降低请求密度。
内容的提问来源于stack exchange,提问作者gelegeta
相关产品推荐
相关产品推荐

