跳转到内容

连接到 NetSuite

使用 SuiteQL 将 NetSuite 中的财务和运营数据拉取到 PlaidCloud 表中。本指南将带您从一个空白的 NetSuite 集成,一直到计划的、带类型的拉取。有关其背后的逐字段参考,请参阅 NetSuite REST 连接器。

在 NetSuite 中,您需要:

  • 启用 OAuth 2.0 和 REST Web Services(Setup > Company > Enable Features > SuiteCloud)。
  • 一个 RSA 密钥对——公共证书上传到 NetSuite,私钥留给 PlaidCloud。
  • 一个证书 ID(JWT 的 kid,来自公共证书的上传)、一个客户端 ID(来自集成记录)以及您的账户 ID(生产环境 1234567 或沙盒 1234567_SB1)。
  • 一个具有 REST Web Services、Log in using OAuth 2.0 Access Tokens、SuiteAnalytics Workbook(如果您的查询涉及分析),以及对您将要读取的记录的查看权限的角色。

完整的 NetSuite 端步骤——生成密钥对、上传证书和创建集成——位于参考中的 NetSuite 端设置。请先完成这些步骤;本指南假定您已拿到这四个值。

  1. 打开 Tools > Connections 并点击 New Connection。

  2. 从菜单中选择 NetSuite。

  3. 填写字段:

    字段 值
    名称 一个易记的名称,例如 NetSuite Prod。
    客户端 ID 集成记录中的客户端 ID。
    证书 ID 公共证书上传后得到的证书 ID(kid)。
    NetSuite 账户 ID 您的账户 ID,例如 1234567 或 1234567_SB1。
    NetSuite 私有证书 完整的私钥 PEM 块,多行粘贴。
  4. 点击 Create。

在其上构建任何内容之前,先确认凭据可用。

  1. 向工作流中添加一个 REST 请求步骤。

  2. 在请求选项卡上,将连接设置为您的 NetSuite 连接,方法设置为 POST,端点设置为 /services/rest/query/v1/suiteql。

  3. 在正文中放入一个很小的有界查询:

    {"q": "SELECT id FROM account WHERE ROWNUM <= 1"}
  4. 点击发送测试请求。

冒烟测试通过后,将该步骤变成真正的拉取。

  1. 在正文中编写带有确定性 ORDER BY 的 SuiteQL 查询。如需可复制粘贴的起点——日记账分录、试算平衡表、损益表、资产负债表、未结应收账款、销售订单、采购订单、库存——请参阅 NetSuite SuiteQL 查询示例。

    财务——某期间的总账交易行:

    {"q": "SELECT tl.transaction AS transaction_id, TO_CHAR(t.trandate, 'YYYY-MM-DD') AS tran_date, a.acctnumber AS account_number, tl.subsidiary AS subsidiary_id, tl.foreignamount AS amount FROM transactionline tl JOIN transaction t ON t.id = tl.transaction JOIN account a ON a.id = tl.expenseaccount WHERE t.trandate BETWEEN TO_DATE('2026-01-01','YYYY-MM-DD') AND TO_DATE('2026-01-31','YYYY-MM-DD') ORDER BY tl.transaction, tl.id"}

    运营——按客户列出的未结销售订单:

    {"q": "SELECT so.tranid AS order_number, so.entity AS customer_id, TO_CHAR(so.trandate, 'YYYY-MM-DD') AS order_date, so.status AS order_status FROM transaction so WHERE so.type = 'SalesOrd' AND so.status = 'SalesOrd:B' ORDER BY so.id"}
  2. 不要改动“分页与解析”控件以及 Prefer/Content-Type 标头——NetSuite 连接会自动注入它们。

  3. 在响应选项卡上,保持目标为表,并使用真实类型定义各列:金额使用 Currency/Decimal,日期使用 Date/Datetime,T/F 标志使用 Boolean。SuiteQL 将所有内容都作为字符串返回;带类型的列会告诉 PlaidCloud 如何进行强制转换。

  1. 运行该步骤(参见在工作流中运行单个步骤)并检查目标表——行数,以及金额/日期列是否已按类型到达,而不是文本。

  2. 如需持续的数据馈送,请为工作流设置计划。

症状 可能原因
测试请求返回 400,并带有范围或角色消息 角色缺少 REST Web Services / OAuth 2.0 登录 / SuiteAnalytics,或范围数组被拒绝——所显示的详细信息会指明。
令牌交换失败 账户 ID 格式错误(缺少 _SB1)、证书 ID(kid)错误,或私钥与上传的公共证书不匹配。
导入时出现类型/转换错误(会指明列和值) 带类型的列收到了无法解析的值——最常见的是 Date/Datetime 列中 SuiteQL 返回了账户的显示格式。请在查询中用 TO_CHAR(col, 'YYYY-MM-DD') 包装该字段,或将列类型设置为 Text。
各子公司的合计对不上 amount 采用每笔交易自身的币种——请使用合并/折算后的字段。
大型拉取中出现重复或缺失的行 偏移量分页的查询没有确定性的 ORDER BY。