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

如何通过DocuSign API/SDK为模板PrefillTabs设值并发起签署

如何为DocuSign模板中的PrefillTabs设置值并发送信封

我在DocuSign中存储了一个使用预填充工具(Pre-fill Tools)的模板,其中包含若干标签。

我可以通过DocuSign SDK获取TemplateTabs:

Tabs dsTabs = TemplatesApi.GetDocumentTabs(DSAccountId, DSTemplateId);

上述DocuSign SDK会返回所有标签,可通过dsTabs.PrefillTabs访问PrefillTabs。

由于PrefillTabs不属于任何特定收件人,如何为这些PrefillTabs设置值并通过EnvelopeApi.CreateEnvelope(DSAccountId, envelopeDefinition)发送模板以进行电子签署?

例如,我的DocuSign模板中已添加并定位了公司预填充工具(Company Pre-Fill Tools),如何为SenderCompany标签预填充值并发送模板进行电子签署?

我的示例代码如下:

// My Sample EnvelopeDefinition
private  EnvelopeDefinition CreateEnvelopeDefinition(string templateId)
{
    EnvelopeDefinition envelopeDefinition = new EnvelopeDefinition();
    envelopeDefinition.TemplateId = templateId;
    envelopeDefinition.EmailSubject = "PreFill Tabs Test Document";
    envelopeDefinition.EmailBlurb = "PreFill Tabs Email Blurb for Testing";
    envelopeDefinition.TemplateRoles = TemplateSigner();

    envelopeDefinition.Status = "sent";

    return envelopeDefinition;
}
private static List<TemplateRole> TemplateSigner()
{
    List<TemplateRole> templateRoleList = new List<TemplateRole>();               

    TemplateRole signer1 = new TemplateRole()
    {
        RoleName = "Contributor",
        Name = "Sample1",
        Email = "sample1@test.com",                  
    };

    TemplateRole signer2 = new TemplateRole()
    {
        RoleName = "Payroll Manager",
        Name = "Sample2",
        Email = "sample2@test.com"
    };

    TemplateRole signer3 = new TemplateRole()
    {
        RoleName = "Administrator",
        Name = "Sample3",
        Email = "sample3@test.com"
    };

    templateRoleList.Add(signer1);
    templateRoleList.Add(signer2);
    templateRoleList.Add(signer3);

    return templateRoleList;
}
private static Tabs SetPreFillTabValues()
{
    SenderName fullName = new SenderName()
    {
        TabLabel = "Signer1Name",
        Value = "Adam"
    };

    SenderCompany senderCompany = new SenderCompany()
    {
        TabLabel = "CompanyTab1",
        Value = "ABC"
    };

    Text text1 = new Text()
    {
        TabLabel = "TextTab1",
        Value = "Text1Val"
    };

    Text text2 = new Text()
    {
        TabLabel = "TextTab2",
        Value = "Text2Val"
    };

    PrefillTabs prefillTabs = new PrefillTabs()
    {
        SenderNameTabs = new List<SenderName> { fullName },
        SenderCompanyTabs = new List<SenderCompany> { senderCompany },
        TextTabs = new List<Text> { text1, text2 }
    };            

    Tabs tabs = new Tabs()
    {
        PrefillTabs = prefillTabs,
    };           

    return tabs;
}

解决方案

PrefillTabs属于整个信封而非单个收件人,因此直接将预填充标签集合赋值给EnvelopeDefinition的Tabs属性即可,无需关联到某个TemplateRole。修改你的CreateEnvelopeDefinition方法,添加预填充标签的绑定逻辑:

private EnvelopeDefinition CreateEnvelopeDefinition(string templateId)
{
    EnvelopeDefinition envelopeDefinition = new EnvelopeDefinition();
    envelopeDefinition.TemplateId = templateId;
    envelopeDefinition.EmailSubject = "PreFill Tabs Test Document";
    envelopeDefinition.EmailBlurb = "PreFill Tabs Email Blurb for Testing";
    envelopeDefinition.TemplateRoles = TemplateSigner();

    // 将预填充标签绑定到信封
    envelopeDefinition.Tabs = SetPreFillTabValues();

    envelopeDefinition.Status = "sent";

    return envelopeDefinition;
}

关键注意事项

  • 确保SetPreFillTabValues中定义的TabLabel与模板里预填充标签的标签名完全一致,否则无法匹配填充。
  • 预填充值会在信封创建时直接写入文档,收件人打开后将看到已填充完成的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 05:45:54