如何使用 DocuSign API/SDK 为 DocuSign 模板中的 PrefillTabs 设置值?

问题描述 投票:0回答:1

我在 DocuSign 中存储了一个模板,其中包含一些使用预填充工具的选项卡。

enter image description here

我可以使用 DocuSign SDK 获取模板选项卡

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

上面的 DocuSign SDK 将为我提供所有选项卡。可以使用

dsTabs.PrefillTabs

访问 PrefillTab

由于 PrefillTab 不特定于任何收件人,我如何为这些 PrefillTab 设置值并使用

EnvelopeApi.CreateEnvelope(DSAccountId, envelopeDefinition)
发送电子签名模板?

例如,我已将公司预填充工具定位/添加到我的 DocuSign 模板中。如何将值预填充到 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 = "[email protected]",                  
    };

    TemplateRole signer2 = new TemplateRole()
    {
        RoleName = "Payroll Manager",
        Name = "Sample2",
        Email = "[email protected]"
    };

    TemplateRole signer3 = new TemplateRole()
    {
        RoleName = "Administrator",
        Name = "Sample3",
        Email = "[email protected]"
    };

    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;
}
c# docusignapi docusign-sdk
1个回答
0
投票

从模板创建信封后,您可以使用以下代码执行此操作:

PrefillTabs prefillTabs = new PrefillTabs();
prefillTabs.TextTabs = new List<text>();
prefillTabs.TextTabs.Add(new Text { PageNumber = "1", DocumentId = "1", tabId = tabIdValue, Value = "MyValue" });
Tabs tabs = new Tabs();
tabs.PrefillTabs = prefillTabs;
envelopesApi.UpdateDocumentTabs(accountId, envelopeId, "1", tabs);

请注意,您必须知道您的

envelopeId
,信封应处于草稿状态(尚未发送),并且您需要找到每个选项卡的
tabId
,并获取其值以匹配您在其中的值您的代码(上面代码中的
tabIdValue
)。为此,您必须首先创建信封,调用以获取所有选项卡,然后执行此更新,只有这样您才能将信封更改为“已发送”状态。

顺便说一句,只需确保您知道,您可以设置不是预填充选项卡的选项卡的值。有些人混淆了这些选项卡,认为这是预填充选项卡值的唯一方法。

© www.soinside.com 2019 - 2024. All rights reserved.