# 用Power Automate把订单发送到Excel

> 用BCL自动化和Power Automate流程，每有一笔已付款的BCL订单，就在OneDrive的Excel表格添加一行。
>
> Source: https://docs.bcl.my/zh/excel-power-automate/

BCL没有内置的Microsoft连接器，但你还是可以把每一笔已付款的订单记录在Excel工作簿里。BCL自动化会把每笔订单发送到Power Automate流程（flow），流程再在你OneDrive里的表格添加一行。设置大约需要15分钟。

## 开始之前

你需要三样东西：

- 一个附带OneDrive和Excel for the web的Microsoft 365工作或学校账号。
- Power Automate Premium许可证或试用。**When an HTTP request is received**触发器是Premium功能，所以Microsoft 365附带的免费Power Automate不够用。你可以在创建流程时开始90天免费试用。
- BCL管理员账号，这样你才能创建自动化。

## 准备Excel工作簿

流程会写入Excel表格，而不是普通的储存格范围。先设置好工作簿：

1. 在OneDrive创建一个文件夹（例如**BCL Demo**），并在里面新建一个Excel工作簿。
2. 在第1行输入这些标题：

   | 列 | 流程在这里填入什么 |
   | --- | --- |
   | Order Number | BCL订单号码 |
   | Payment Date | 付款日期和时间 |
   | Customer | 顾客名字 |
   | Email | 顾客电邮 |
   | Phone | 顾客电话号码 |
   | Form | 顾客付款的表单 |
   | Items | 产品和数量，例如2x House Blend 250g |
   | Amount | 已付金额，以数字表示 |
   | Payment Method | 例如FPX或DuitNow QR |
   | Status | 付款状态 |

3. 选中标题，点击**Home** → **Format As Table**。勾选**My table has headers**。

Excel会在新表格的标题下保留一个空行。第一笔订单进来后，你可以删除这个空行。

## 在Power Automate创建流程

流程会给你一个网址，BCL会把每笔订单发送到这个网址：

1. 前往[make.powerautomate.com](https://make.powerautomate.com)，点击**Create** → **Instant cloud flow**，然后为流程命名。
2. 选择**When an HTTP request is received**，点击**Create**。

   *(Screenshot: Build an instant cloud flow对话框，已选择When an HTTP request is received，Create按钮已标示)*

3. 点击触发器。在<strong>Who can trigger the flow?</strong>选择**Anyone**。BCL不会登录Microsoft，所以默认的**Any user in my tenant**会挡住它。

   *(Screenshot: Who can trigger the flow?列表，Anyone已标示)*

4. 点击**Use sample payload to generate schema**，粘贴这个范例，然后点击**Done**：

   ```json
   {
     "order_number": "BC-00123",
     "payment_date": "2026-09-27 14:05:11",
     "name": "Nurul Aina",
     "email": "nurul.aina@example.com",
     "phone": "60133456789",
     "form_title": "Kopi Kampung Coffee Beans",
     "items": "2x House Blend 250g",
     "amount": "70.00",
     "payment_method": "FPX",
     "status": "Successful"
   }
   ```

   *(Screenshot: 已粘贴到schema对话框的JSON范例payload)*

5. 点击触发器下的<strong>+</strong>，搜索**Add a row into a table**，然后选择<strong>Excel Online (Business)</strong>操作。如果Power Automate要求你创建连接，就登录。

   *(Screenshot: Add an action面板，Add a row into a table已标示)*

6. 把**Location**设为**OneDrive for Business**，**Document Library**设为**OneDrive**，在**File**选择你的工作簿，在**Table**选择你的表格。

   *(Screenshot: Add a row into a table操作，已填写Location、Document Library、File和Table)*

7. 在**Advanced parameters**下，点击**Show all**。点击每一列，用闪电图标选择对应的值：Order Number选**order_number**，Customer选**name**，Form选**form_title**，其他依此类推。

   *(Screenshot: 每个Excel列都已填入来自HTTP触发器的值)*

8. 点击**Save**。如果流程检查器说拥有者需要Power Automate Premium许可证，就点击**Test**，再点击警告里的**free 90-day trial**，然后点击**Start trial**。试用不需要信用卡。试用开始后，再保存一次流程。

   *(Screenshot: Start your free 90-day trial对话框，Start trial按钮已标示)*

9. 再次点击触发器，复制**HTTP URL**。Power Automate只会在第一次保存后才生成这个网址。

   *(Screenshot: 触发器的HTTP URL栏位，网址已遮盖，旁边是复制按钮)*

在流程的详情页面检查流程是否为**On**。如果显示**Off**，点击**Turn on**。

## 从BCL发送已付款的订单

接着，创建一个BCL自动化，把每笔已付款的订单发送到流程：

1. 在侧边栏点击**Automations**，然后点击**New Automation**。为它命名，例如Orders to Excel，然后点击**Create**。

   *(Screenshot: Automations页面，侧边栏的Automations和New Automation按钮已标示)*

2. 点击**Add Node**，选择**Payment Successful**触发器。**Payment Source Type**保留为**All Sources**就会记录所有表单，也可以只选一个表单。点击**Save Trigger**。
3. 再点击**Add Node**，选择**HTTP Request**。

   *(Screenshot: 工作流程里，Payment Successful触发器连接到Send to Excel这个HTTP Request操作)*

4. 双击新节点。填写**Action Name**，**Method**保留为**POST**，然后把流程的网址粘贴到**Request URL**。
5. 打开**Body**标签页，选择**Raw JSON**，粘贴这个body。每个`{variable}`都会换成该订单的值：

   ```json
   {
     "order_number": "{order_number}",
     "payment_date": "{payment_date}",
     "name": "{name}",
     "email": "{email}",
     "phone": "{phone}",
     "form_title": "{form_title}",
     "items": "{items_summary}",
     "amount": "{amount_value}",
     "payment_method": "{payment_method}",
     "status": "{payment_status}"
   }
   ```

   *(Screenshot: HTTP Request的Action Settings，Request URL和Raw JSON body已标示)*

6. 点击**Save HTTP Request**，然后点击**Update Automation**。

要检查连接，在**HTTP Request**操作里点击**Send Test Request**，或在你的任何一个表单做一笔测试付款。几秒内，你的Excel表格就会出现新的一行。

*(Screenshot: Excel表格里订单LINK-05845的新一行已标示)*

## 用自动化还是表单webhook？

付款表单自己的webhook也可以调用Power Automate流程。不过，自动化通常比较简单：

| | 用HTTP Request的自动化 | 表单webhook |
| --- | --- | --- |
| 在哪里设置 | 在**Automations**设置一次 | 每个表单各自在**Advanced** → **Webhook Settings**设置 |
| 哪些销售 | 所有来源（付款、活动和预约表单，QR Terminal）或一个表单 | 只有该表单 |
| BCL发送什么 | 只有你列出的栏位，用你自己取的名称 | 完整的payload，放在`data`下，产品以列表形式发送 |
| 在流程里 | 一个平面的schema，一个**Add a row into a table** | 嵌套的schema，产品行需要用**Apply to each** |

需要BCL的所有栏位时（例如自定义栏位和完整的产品列表），就使用表单webhook。请看[付款表单webhook payload](/zh/webhook-payment-form/)。

## 小贴士

几个好习惯，让连接保持稳定：

- **不要公开流程的网址**。任何人只要有**HTTP URL**，就能在你的工作簿添加行。不要把它贴在聊天或截图里。如果网址外泄，就关闭流程，再创建一个新的流程，它会有新的网址。
- **重命名Excel列之前，先配合流程**。如果你在表格里重命名或删除某一列，就要打开流程重新选择表格，否则流程会失败。
- **用订单号码找出重复的记录**。如果一笔订单出现两次，按**Order Number**排序表格，然后删除多出来的那一行。
- **也想要图表**？把Power BI连接到同一个工作簿。请看[用Power BI分析你的BCL销售](/zh/power-bi/)。

## 常见问题

### 我自己的电子表格怎样知道有付款进来？

创建一个自动化，使用Payment Successful触发器和HTTP Request操作，把订单发送到你的Power Automate流程。每有一笔已付款的订单，流程就会在你的Excel表格添加一行。

### Power Automate说我的流程需要Premium许可证。为什么？

When an HTTP request is received触发器是Premium功能。从流程的许可证警告开始90天免费试用，或向你的Microsoft 365管理员申请Power Automate Premium许可证。

### 我的流程什么都没收到。怎样测试？

在你的BCL自动化里打开HTTP Request操作，点击Send Test Request，然后在Power Automate查看流程的运行记录。确保<strong>Who can trigger the flow?</strong>设为Anyone，而且流程已开启。
