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

如何在Zapier代码步骤生成嵌套JSON传递给Formstack Documents

Zapier Python步骤实现Pipedrive产品明细转Formstack Documents兼容结构方案

前置准备

确认Zap的触发步骤已配置为「Pipedrive - Deal Updated to Stage」,且触发后已通过Pipedrive的「Find Deal Products」动作拉取到当前商机关联的所有产品字段:name、code、unit、quantity、category。


步骤1:配置Python代码步骤输入

  1. 在Pipedrive取数步骤后新增「Code by Zapier」动作,选择Run Python
  2. 在Input Data配置区按如下规则映射字段:
    • 键名names,值选择Pipedrive输出的所有产品名称数组
    • 键名codes,值选择Pipedrive输出的所有产品编码数组
    • 键名units,值选择Pipedrive输出的所有产品单位数组
    • 键名quantities,值选择Pipedrive输出的所有产品数量数组
    • 键名categories,值选择Pipedrive输出的所有产品分类数组
      按需可新增其他商机字段的映射,比如deal_name、deal_id等

步骤2:写入Python合并逻辑

将以下代码粘贴到代码编辑区:

# 读取Zapier传入的输入数据,兼容字符串逗号分隔和数组两种格式
names = input_data.get('names', '').split(',') if isinstance(input_data.get('names'), str) else input_data.get('names', [])
codes = input_data.get('codes', '').split(',') if isinstance(input_data.get('codes'), str) else input_data.get('codes', [])
units = input_data.get('units', '').split(',') if isinstance(input_data.get('units'), str) else input_data.get('units', [])
quantities = input_data.get('quantities', '').split(',') if isinstance(input_data.get('quantities'), str) else input_data.get('quantities', [])
categories = input_data.get('categories', '').split(',') if isinstance(input_data.get('categories'), str) else input_data.get('categories', [])

# 校验所有明细字段长度一致
line_item_count = len(names)
if not all(len(lst) == line_item_count for lst in [codes, units, quantities, categories]):
    raise Exception("产品明细字段长度不匹配,请检查输入配置")

# 生成Formstack Documents可识别的嵌套明细结构
product_line_items = []
for i in range(line_item_count):
    product_line_items.append({
        "name": names[i].strip(),
        "code": codes[i].strip(),
        "unit": units[i].strip(),
        "quantity": quantities[i].strip(),
        "category": categories[i].strip()
    })

# 输出结果供后续步骤调用
output = {
    "product_line_items": product_line_items,
    "line_item_count": line_item_count
}

代码运行后输出的product_line_items字段完全兼容Formstack的tablerow函数,原有文档模板无需修改,直接用{% tablerow product in product_line_items %}即可循环生成表格行。


可选:同步骤直接调用Formstack REST API生成文档

如果不想走Zapier自带的Formstack动作,可以在上述代码基础上新增API调用逻辑,跳过后续动作直接完成文档生成:

import requests

# 替换为你的Formstack账户信息
FORMSTACK_API_KEY = "你的API密钥"
DOCUMENT_ID = "目标文档ID"

# 构造完整合并数据
merge_data = {
    "deal_name": input_data.get("deal_name"),
    "deal_id": input_data.get("deal_id"),
    "product_line_items": product_line_items
    # 按需添加其他需要填充到文档的字段
}

# 调用API触发文档合并
api_url = f"https://www.webmerge.me/merge/{DOCUMENT_ID}?api_key={FORMSTACK_API_KEY}"
response = requests.post(api_url, json=merge_data)
response.raise_for_status()

# 新增文档地址到输出结果
output["formstack_document_url"] = response.json().get("url")

后续配置说明

  • 若使用Zapier自带的Formstack Documents动作:直接在动作的输入参数中,选择代码步骤输出的product_line_items传入产品列表字段即可
  • 若使用代码直接调用API:可直接将输出的formstack_document_url用于后续发送邮件、存储到云盘等动作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:15:02