Docusignapi 如何取消与AnchorTag一起放置的复选框的分组
我们在文档中使用AnchorTags将签名元素放入PDF文档中。到目前为止,像“SignHere”这样的签名元素按预期工作,每个签名点击一次,并正确地放置到文档中。我们现在正试图用AnchorTags将复选框添加到这些文档中,我们遇到了一些关于复选框是如何使用的问题。标记和2。分组 根据DocuSign文档: 对于放置的每组字段,组中所有字段的数据标签都相同。这对于收件人填写的字段类型(如文本字段)很重要。如果数据标签保持不变,则当收件人填写组中的任何一个字段时,所有其他类似字段将自动填充相同的数据 通过使用API创建复选框,我们可以使用类似这样的JSON对象将文档中的字符串值指定为checkbox标记。这将找到字符串BOR_2_CHK,并在每个实例上放置一个复选框Docusignapi 如何取消与AnchorTag一起放置的复选框的分组,docusignapi,Docusignapi,我们在文档中使用AnchorTags将签名元素放入PDF文档中。到目前为止,像“SignHere”这样的签名元素按预期工作,每个签名点击一次,并正确地放置到文档中。我们现在正试图用AnchorTags将复选框添加到这些文档中,我们遇到了一些关于复选框是如何使用的问题。标记和2。分组 根据DocuSign文档: 对于放置的每组字段,组中所有字段的数据标签都相同。这对于收件人填写的字段类型(如文本字段)很重要。如果数据标签保持不变,则当收件人填写组中的任何一个字段时,所有其他类似字段将自动填充相同的
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,你可以自己回答。