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

使用DocuSign复合模板(含服务器模板)时如何为文档添加唯一标识?

在DocuSign复合模板中为服务器模板生成的文档添加唯一标识

解决这个问题的核心是将documentFields直接绑定到每个复合模板的document对象上——这是DocuSign官方支持的为单个文档添加自定义元数据的方式,你之前的尝试失败大概率是因为字段层级放错了位置。

一、创建信封时为每个文档添加唯一标识

使用Node.js SDK构建信封时,每个复合模板(CompositeTemplate)下的document对象可以直接配置documentFields,用来存储你的唯一标识。示例代码如下:

const docusign = require('docusign-esign');

// 初始化DocuSign客户端(省略客户端配置步骤)
const apiClient = new docusign.ApiClient();
apiClient.setBasePath('https://demo.docusign.net/restapi');
apiClient.addDefaultHeader('Authorization', 'Bearer YOUR_ACCESS_TOKEN');

// 构建第一个复合模板(复用服务器模板)
const compositeTemplate1 = new docusign.CompositeTemplate();
compositeTemplate1.compositeTemplateId = '1';

// 关联服务器模板
const serverTemplate1 = new docusign.ServerTemplate();
serverTemplate1.templateId = 'YOUR_SERVER_TEMPLATE_ID';
serverTemplate1.sequence = '1';
compositeTemplate1.serverTemplates = [serverTemplate1];

// 配置文档及唯一标识字段
const doc1 = new docusign.Document();
doc1.documentId = '1';
// 添加自定义唯一标识
doc1.documentFields = [
  new docusign.NameValue({
    name: 'uniqueDocId',
    value: 'ORDER-2024-001' // 替换为你的业务唯一标识
  })
];
compositeTemplate1.document = doc1;

// 添加内联模板(用于填充服务器模板的标签)
const inlineTemplate1 = new docusign.InlineTemplate();
inlineTemplate1.sequence = '2';
// 配置收件人、标签填充值等(省略具体配置)
compositeTemplate1.inlineTemplates = [inlineTemplate1];

// 构建第二个复合模板(相同服务器模板,不同唯一标识)
const compositeTemplate2 = new docusign.CompositeTemplate();
compositeTemplate2.compositeTemplateId = '2';

const serverTemplate2 = new docusign.ServerTemplate();
serverTemplate2.templateId = 'YOUR_SERVER_TEMPLATE_ID';
serverTemplate2.sequence = '1';
compositeTemplate2.serverTemplates = [serverTemplate2];

const doc2 = new docusign.Document();
doc2.documentId = '2';
doc2.documentFields = [
  new docusign.NameValue({
    name: 'uniqueDocId',
    value: 'ORDER-2024-002'
  })
];
compositeTemplate2.document = doc2;

const inlineTemplate2 = new docusign.InlineTemplate();
inlineTemplate2.sequence = '2';
// 配置另一组标签填充值
compositeTemplate2.inlineTemplates = [inlineTemplate2];

// 组装信封定义并发送
const envelopeDefinition = new docusign.EnvelopeDefinition();
envelopeDefinition.compositeTemplates = [compositeTemplate1, compositeTemplate2];
envelopeDefinition.status = 'sent';

const envelopesApi = new docusign.EnvelopesApi(apiClient);
const envelope = await envelopesApi.createEnvelope('YOUR_ACCOUNT_ID', { envelopeDefinition });

二、获取已签署文档时提取唯一标识

调用envelopes::listDocuments接口后,返回的每个文档对象会包含你之前设置的documentFields,直接读取即可实现唯一识别:

const envelopesApi = new docusign.EnvelopesApi(apiClient);
const docsResponse = await envelopesApi.listDocuments('YOUR_ACCOUNT_ID', envelope.envelopeId);

// 遍历文档,根据唯一标识处理
docsResponse.envelopeDocuments.forEach(doc => {
  const uniqueIdField = doc.documentFields?.find(field => field.name === 'uniqueDocId');
  if (uniqueIdField) {
    console.log(`文档文件名: ${doc.name}, 唯一标识: ${uniqueIdField.value}`);
    // 此处根据唯一标识执行后续业务逻辑
  }
});

关键注意事项

  • documentFields必须直接挂载在复合模板的document对象下,不能放在内联模板或服务器模板中,这是你之前尝试失败的核心原因。
  • 这种方式是DocuSign官方支持的文档级元数据存储,完全可靠,不会依赖文档顺序这类不稳定因素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 05:25:16