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

寻求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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 07:33:19