Docusignapi 如何取消与AnchorTag一起放置的复选框的分组

Docusignapi 如何取消与AnchorTag一起放置的复选框的分组,docusignapi,Docusignapi,我们在文档中使用AnchorTags将签名元素放入PDF文档中。到目前为止,像“SignHere”这样的签名元素按预期工作,每个签名点击一次,并正确地放置到文档中。我们现在正试图用AnchorTags将复选框添加到这些文档中,我们遇到了一些关于复选框是如何使用的问题。标记和2。分组 根据DocuSign文档: 对于放置的每组字段,组中所有字段的数据标签都相同。这对于收件人填写的字段类型(如文本字段)很重要。如果数据标签保持不变,则当收件人填写组中的任何一个字段时,所有其他类似字段将自动填充相同的

我们在文档中使用AnchorTags将签名元素放入PDF文档中。到目前为止,像“SignHere”这样的签名元素按预期工作,每个签名点击一次,并正确地放置到文档中。我们现在正试图用AnchorTags将复选框添加到这些文档中,我们遇到了一些关于复选框是如何使用的问题。标记和2。分组

根据DocuSign文档:

对于放置的每组字段,组中所有字段的数据标签都相同。这对于收件人填写的字段类型(如文本字段)很重要。如果数据标签保持不变,则当收件人填写组中的任何一个字段时,所有其他类似字段将自动填充相同的数据

通过使用API创建复选框,我们可以使用类似这样的JSON对象将文档中的字符串值指定为checkbox标记。这将找到字符串BOR_2_CHK,并在每个实例上放置一个复选框

PUT /v2/accounts/{accountId}/envelopes/{envelopeId}/recipients/{recipientId}/tabs

{
"checkboxTabs": [
    {
        "name": "",
        "tabLabel": "Checkbox1",
        "selected": "false",
        "shared": "false",
        "required": "false",
        "locked": "false",
        "documentId": "46688109",
        "recipientId": "50556292",
        "anchorString": "BOR_2_CHK",
        "anchorXOffset": "0",
        "anchorYOffset": "0",
        "anchorUnits": "pixels",
        "anchorCaseSensitive": "false",
        "anchorMatchWholeWord": "true",
        "anchorHorizontalAlignment": "left",
        "tabId": ""
    }]}
此调用对具有多个匹配主播字符串的文档的影响是,将在每个匹配位置放置一个复选框,当选中任何复选框时,它们都将被选中。通过为文档中的复选框指定“自动替换”规则,可以轻松地在DocuSign网站中复制

这就是问题的症结所在,当使用AnchorTags放置复选框的文档中存在多个AnchortString实例时,签名仪式将显示多个复选框,但API仅报告文档上有一个复选框选项卡

{
"checkboxTabs": [
    {
        "name": "",
        "tabLabel": "Checkbox 0daa7d08-db75-43da-bcee-01a6451a34a5",
        "selected": "false",
        "shared": "false",
        "required": "false",
        "locked": "false",
        "documentId": "46688109",
        "recipientId": "50556292",
        "pageNumber": "1",
        "xPosition": "74",
        "yPosition": "253",
        "anchorString": "BOR_2_CHK",
        "anchorXOffset": "0",
        "anchorYOffset": "0",
        "anchorUnits": "pixels",
        "anchorCaseSensitive": "false",
        "anchorMatchWholeWord": "true",
        "anchorHorizontalAlignment": "left",
        "tabId": "d87fb774-2b4b-4c86-95b3-e5a730066874"
    },
    {
        "name": "",
        "tabLabel": "BOR_1_CHK",
        "selected": "false",
        "shared": "false",
        "required": "false",
        "locked": "false",
        "documentId": "46688109",
        "recipientId": "50556292",
        "pageNumber": "1",
        "xPosition": "74",
        "yPosition": "73",
        "anchorString": "BOR_1_CHK",
        "anchorXOffset": "0",
        "anchorYOffset": "0",
        "anchorUnits": "pixels",
        "anchorCaseSensitive": "false",
        "anchorMatchWholeWord": "true",
        "anchorHorizontalAlignment": "left",
        "tabId": "966c4273-d4a4-4acd-8ff5-08b27ba69c13"
    }
  ]
}
在下面的JSON示例中,文档中有2个锚字符串的3个实例,因此文档中总共有6个复选框

{
"checkboxTabs": [
    {
        "name": "",
        "tabLabel": "Checkbox 0daa7d08-db75-43da-bcee-01a6451a34a5",
        "selected": "false",
        "shared": "false",
        "required": "false",
        "locked": "false",
        "documentId": "46688109",
        "recipientId": "50556292",
        "pageNumber": "1",
        "xPosition": "74",
        "yPosition": "253",
        "anchorString": "BOR_2_CHK",
        "anchorXOffset": "0",
        "anchorYOffset": "0",
        "anchorUnits": "pixels",
        "anchorCaseSensitive": "false",
        "anchorMatchWholeWord": "true",
        "anchorHorizontalAlignment": "left",
        "tabId": "d87fb774-2b4b-4c86-95b3-e5a730066874"
    },
    {
        "name": "",
        "tabLabel": "BOR_1_CHK",
        "selected": "false",
        "shared": "false",
        "required": "false",
        "locked": "false",
        "documentId": "46688109",
        "recipientId": "50556292",
        "pageNumber": "1",
        "xPosition": "74",
        "yPosition": "73",
        "anchorString": "BOR_1_CHK",
        "anchorXOffset": "0",
        "anchorYOffset": "0",
        "anchorUnits": "pixels",
        "anchorCaseSensitive": "false",
        "anchorMatchWholeWord": "true",
        "anchorHorizontalAlignment": "left",
        "tabId": "966c4273-d4a4-4acd-8ff5-08b27ba69c13"
    }
  ]
}
我的问题是,如何使用DocuSign REST API将文档上的所有6个复选框解组并独立工作

DocuSign网站有一个按钮,作为AutoPlace的一部分,名为“Ungroup”,当在UI中单击该按钮时,API会显示分配给锚字符串的每个复选框的复选框选项卡,但是“ancorString”属性都已从解组的对象中删除。我搜索了DocuSign API文档以及StackOverflow,没有找到任何可以用来完成此任务的“解组”方法或属性

我发现取消复选框分组的唯一方法是使用EnvelopeTabs:Update方法删除对象的anchorTag属性,将它们设置为null。这种方法是有限的,因为当我查询信封上的选项卡列表时,每个分组复选框选项卡仅显示为单个对象,因此要取消3个复选框的分组,我必须执行3次更新,2个GET作为第2个和第3个复选框的选项卡ID,只有在其前一个复选框被更改后才可用

通常,我们的文档可以有6个以上的签名者,每个签名者在一个文档中有40个或更多的复选框元素,即240个对单个信封的GET/PUT请求,并且在4个信封之后将达到DocuSign速率限制


提前感谢您的帮助,

您可以使用该方法获取收件人所有字段(标记)的列表,查询参数
include\u anchor\u tab\u locations
设置为true:

如果设置为true,则响应中将包含具有锚定选项卡属性的所有选项卡

不幸的是,我不知道如何复制web工具的“ungroup”命令的效果这一特定问题的答案

更新
有关类似于“ungroup”命令的选项卡解组,请参见此。基于Larry K提供的信息,我能够推导出使用主播字符串分配的选项卡“解组”方法

步骤1-使用“includeAnchorTabLocations”选项集获取信封信息

            //Get envelope information
        EnvelopesApi envelopesApi = new EnvelopesApi();
        EnvelopesApi.ListTabsOptions options = new EnvelopesApi.ListTabsOptions();
        options.includeAnchorTabLocations = "True";
        Envelope envInfo = envelopesApi.GetEnvelope(accountId, envelopeID);

            //Get recipients on envelope
        Recipients recips = envelopesApi.ListRecipients(accountId, envelopeID);
        RecipientsUpdateSummary updateSummary = new RecipientsUpdateSummary();
            //List documents in envelope
        EnvelopeDocumentsResult docsList = envelopesApi.ListDocuments(accountId, envelopeID);
步骤2-对于信封中的每个收件人,更新选项卡并移除锚定字符串。在我们的例子中,我们还希望每个选项卡都有独立的数据,因此TabLabel也被更新为唯一的值

            //Remove AnchorString from tabs in documents
        foreach (Signer recip in recips.Signers)
        {
            Tabs tabs = envelopesApi.ListTabs(accountId, envInfo.EnvelopeId, recip.RecipientId, options);

            if (tabs.CheckboxTabs != null)
            {
                foreach ( Checkbox tab in recip.Tabs.CheckboxTabs)
                {
                    // Ungroup checkbox tabs by removing the AnchorString                      
                    tab.AnchorString = "";
                    tab.TabLabel = Guid.NewGuid().ToString();
                }
            }

            envelopesApi.UpdateTabs(accountId, envInfo.EnvelopeId, recip.RecipientId, tabs);
        }
最后说明

由于正在使用锚定标签,信封最初应以“草稿”状态提交给DocuSign,这允许DocuSign处理文档中的锚定字符串。处理后,每个选项卡将具有X、Y坐标,允许删除锚链,同时仍保持每个选项卡在文档中的原始位置。更新选项卡后,将信封信息更新为“已发送”状态,并启动信封API更新方法以提交更改

        envInfo.PurgeState = null;
        envInfo.Status = "sent";
        envelopesApi.Update(accountId, envelopeID, envInfo, null);

拉里,谢谢你提供的信息,我不知道我怎么会错过“获取标签”方法的选项。使用带有“include_anchor_tab_locations”的方法,我应该能够迭代返回的集合,删除以前分配的锚点字符串属性并分配唯一的标签,从而有效地使复选框解组并独立操作。我将在测试此方法后发布更新。这应该是可接受的答案@bfrank-c,你可以自己回答。