AppSheet API 串接指南:與外部系統整合【2025完整教學】
AppSheet API 串接指南:與外部系統整合【2025完整教學】
AppSheet 不只是獨立的 App,還能跟你的其他系統連接。
透過 API,AppSheet 可以和 ERP、CRM、電商平台、自建系統整合。
這篇教學會教你如何使用 AppSheet API,從取得 API Key 到實際串接。
想先了解 AppSheet 基礎功能,請參考 AppSheet 完整指南。
AppSheet API 是什麼?
先釐清 API 能做什麼。
REST API 概述
AppSheet 提供標準的 REST API。
REST(Representational State Transfer)是一種網路 API 設計風格,幾乎所有程式語言都能呼叫。
AppSheet API 的特點:
- 標準 HTTP 方法(GET、POST、PUT、DELETE)
- JSON 格式傳輸資料
- 基於 Application ID 和 Access Key 認證
- 支援 CRUD 完整操作
可以做什麼?
透過 API,你可以:
| 操作 | 說明 | 用途範例 |
|---|---|---|
| 讀取資料 | 從 AppSheet 取得資料 | 在網站顯示庫存數量 |
| 新增資料 | 從外部系統寫入 AppSheet | 電商訂單自動匯入 |
| 更新資料 | 修改 AppSheet 中的資料 | ERP 同步更新狀態 |
| 刪除資料 | 移除 AppSheet 中的資料 | 過期資料自動清理 |
使用限制
重要提醒:API 需要 Core 方案以上。
| 方案 | API 支援 |
|---|---|
| 免費 | 不支援 |
| Starter | 不支援 |
| Core | 支援 |
| Enterprise | 支援(更高限制) |
詳細方案比較請參考 AppSheet 費用完整解析。
其他限制:
- 每分鐘請求數限制(Core:10 req/min)
- 每次回傳最多 500 筆資料
- API Key 需妥善保管

API 存取設定
使用 API 前,需要先設定存取權限。
步驟 1:啟用 API 功能
Step 1:進入設定
登入 AppSheet 後,開啟你的 App
點選「Settings」→「Integrations」
Step 2:啟用 API
找到「IN: from cloud services to your app」區塊
將「Enable」設為開啟
Step 3:取得認證資訊
記下以下兩個值:
- App ID:你的 Application ID
- Access Key:點「Create Application Access Key」產生
步驟 2:設定 Table 權限
不是所有 Table 都能透過 API 存取,需要個別設定。
設定方式:
- 進入「Data」→「Tables」
- 選擇要開放 API 的 Table
- 點選「Are updates allowed?」
- 確認「All changes」或「Adds and updates only」
權限說明:
| 設定 | API 可用操作 |
|---|---|
| All changes | 新增、更新、刪除 |
| Adds and updates only | 新增、更新(不能刪除) |
| Adds only | 只能新增 |
| Read-Only | 只能讀取 |
步驟 3:安全性考量
API Key 洩漏會有嚴重後果,請務必注意。
安全建議:
-
不要把 API Key 放在前端程式碼
- JavaScript 中的 Key 任何人都看得到
- 要放在後端伺服器
-
使用 HTTPS
- AppSheet API 強制使用 HTTPS
- 確保資料傳輸加密
-
定期更換 Key
- 建議每 3-6 個月換一次
- 發現可能洩漏時立即更換
-
IP 白名單(Enterprise)
- Enterprise 方案可設定只允許特定 IP
API 操作教學
實際的 API 呼叫方式。
API 端點格式
AppSheet API 的基本端點:
https://api.appsheet.com/api/v2/apps/{appId}/tables/{tableName}/Action
參數說明:
{appId}:你的 Application ID{tableName}:資料表名稱
讀取資料(Find)
取得資料表中的資料。
請求範例:
curl -X POST \
'https://api.appsheet.com/api/v2/apps/YOUR_APP_ID/tables/Orders/Action' \
-H 'ApplicationAccessKey: YOUR_ACCESS_KEY' \
-H 'Content-Type: application/json' \
-d '{
"Action": "Find",
"Properties": {
"Locale": "zh-TW",
"Selector": "Filter(Orders, [Status] = \"待處理\")"
}
}'
參數說明:
| 參數 | 說明 |
|---|---|
| Action | "Find" 表示讀取 |
| Locale | 語系設定 |
| Selector | 篩選條件(使用 AppSheet 公式語法) |
回傳格式:
{
"Rows": [
{
"OrderID": "ORD-001",
"Customer": "王小明",
"Amount": 1500,
"Status": "待處理"
},
{
"OrderID": "ORD-002",
"Customer": "李小華",
"Amount": 2300,
"Status": "待處理"
}
]
}
新增資料(Add)
新增一筆資料到 Table。
請求範例:
curl -X POST \
'https://api.appsheet.com/api/v2/apps/YOUR_APP_ID/tables/Orders/Action' \
-H 'ApplicationAccessKey: YOUR_ACCESS_KEY' \
-H 'Content-Type: application/json' \
-d '{
"Action": "Add",
"Properties": {
"Locale": "zh-TW"
},
"Rows": [
{
"OrderID": "ORD-003",
"Customer": "張小美",
"Amount": 980,
"Status": "待處理",
"CreatedAt": "2025-12-15"
}
]
}'
重要提醒:
- 必填欄位不能漏
- Key 欄位值不能重複
- 日期格式要正確
更新資料(Edit)
修改現有資料。
請求範例:
curl -X POST \
'https://api.appsheet.com/api/v2/apps/YOUR_APP_ID/tables/Orders/Action' \
-H 'ApplicationAccessKey: YOUR_ACCESS_KEY' \
-H 'Content-Type: application/json' \
-d '{
"Action": "Edit",
"Properties": {
"Locale": "zh-TW"
},
"Rows": [
{
"OrderID": "ORD-001",
"Status": "已出貨"
}
]
}'
注意: 必須包含 Key 欄位(此例中是 OrderID),系統才知道要更新哪一筆。
刪除資料(Delete)
刪除指定資料。
請求範例:
curl -X POST \
'https://api.appsheet.com/api/v2/apps/YOUR_APP_ID/tables/Orders/Action' \
-H 'ApplicationAccessKey: YOUR_ACCESS_KEY' \
-H 'Content-Type: application/json' \
-d '{
"Action": "Delete",
"Properties": {
"Locale": "zh-TW"
},
"Rows": [
{
"OrderID": "ORD-003"
}
]
}'
注意: 只需要提供 Key 欄位即可。

整合範例
實際的整合應用場景。
與 Zapier 整合
Zapier 是最常用的自動化整合平台。
方式 1:AppSheet → Zapier(使用 Webhook)
當 AppSheet 有事件時,觸發 Zapier。
設定步驟:
- 在 Zapier 建立新 Zap
- Trigger 選擇「Webhooks by Zapier」→「Catch Hook」
- 複製 Webhook URL
- 在 AppSheet Automation 設定 Call Webhook
- 把 Zapier URL 貼上
- 設定要傳送的資料
方式 2:Zapier → AppSheet(使用 API)
從 Zapier 寫入資料到 AppSheet。
設定步驟:
- 在 Zapier 建立新 Zap
- 設定 Trigger(例如:新 Google Form 回應)
- Action 選擇「Webhooks by Zapier」→「Custom Request」
- Method:POST
- URL:AppSheet API 端點
- Headers:加入 ApplicationAccessKey
- Body:JSON 格式的資料
與 Make (Integromat) 整合
Make 是另一個強大的自動化平台,比 Zapier 更彈性。
Make 的優勢:
- 視覺化流程設計
- 複雜邏輯處理
- 費用較低
設定步驟:
- 建立新 Scenario
- 新增「HTTP」→「Make a request」模組
- URL:AppSheet API 端點
- Method:POST
- Headers:
- ApplicationAccessKey: YOUR_KEY
- Content-Type: application/json
- Body:JSON 格式
範例:電商訂單同步
{
"Action": "Add",
"Properties": {"Locale": "zh-TW"},
"Rows": [{
"OrderID": "{{1.order_id}}",
"Customer": "{{1.customer_name}}",
"Amount": "{{1.total_amount}}",
"Status": "待處理"
}]
}
{{1.xxx}} 是 Make 的變數語法,會自動代入上一個模組的資料。
與自建系統整合
如果有自己的系統,可以直接用程式呼叫 API。
Python 範例:
import requests
import json
# API 設定
APP_ID = "your-app-id"
ACCESS_KEY = "your-access-key"
TABLE_NAME = "Orders"
# API 端點
url = f"https://api.appsheet.com/api/v2/apps/{APP_ID}/tables/{TABLE_NAME}/Action"
# Headers
headers = {
"ApplicationAccessKey": ACCESS_KEY,
"Content-Type": "application/json"
}
# 新增訂單
def add_order(order_data):
payload = {
"Action": "Add",
"Properties": {"Locale": "zh-TW"},
"Rows": [order_data]
}
response = requests.post(url, headers=headers, json=payload)
return response.json()
# 使用範例
new_order = {
"OrderID": "ORD-100",
"Customer": "陳大明",
"Amount": 5000,
"Status": "待處理"
}
result = add_order(new_order)
print(result)
Node.js 範例:
const axios = require('axios');
const APP_ID = 'your-app-id';
const ACCESS_KEY = 'your-access-key';
const TABLE_NAME = 'Orders';
const url = `https://api.appsheet.com/api/v2/apps/${APP_ID}/tables/${TABLE_NAME}/Action`;
async function addOrder(orderData) {
const payload = {
Action: 'Add',
Properties: { Locale: 'zh-TW' },
Rows: [orderData]
};
const response = await axios.post(url, payload, {
headers: {
'ApplicationAccessKey': ACCESS_KEY,
'Content-Type': 'application/json'
}
});
return response.data;
}
// 使用範例
const newOrder = {
OrderID: 'ORD-101',
Customer: '林小芳',
Amount: 3200,
Status: '待處理'
};
addOrder(newOrder).then(result => console.log(result));
API 串接太複雜? 與外部系統整合需要考慮錯誤處理、安全性、效能。
預約架構諮詢,讓我們幫你設計穩定的整合方案。
進階應用
更複雜的 API 使用技巧。
Webhook 接收
除了呼叫外部 API,AppSheet 也能接收外部系統的通知。
使用場景:
- 電商平台訂單狀態更新
- 金流系統付款通知
- 外部系統觸發 AppSheet 動作
設定方式:
- 在 AppSheet 建立 Action
- Action 類型選「Data: execute an action on a set of rows」
- 設定要執行的動作
- 在 Settings → Integrations 找到此 Action 的 URL
- 提供 URL 給外部系統呼叫
詳細 Webhook 設定請參考 AppSheet Automation 教學。
批次操作
一次處理多筆資料,提高效率。
新增多筆資料:
{
"Action": "Add",
"Properties": {"Locale": "zh-TW"},
"Rows": [
{"OrderID": "ORD-201", "Customer": "A客戶", "Amount": 1000},
{"OrderID": "ORD-202", "Customer": "B客戶", "Amount": 2000},
{"OrderID": "ORD-203", "Customer": "C客戶", "Amount": 3000}
]
}
注意事項:
- 單次最多 500 筆
- 超過建議分批處理
- 錯誤會整批失敗,沒有部分成功
錯誤處理
API 呼叫可能失敗,要做好錯誤處理。
常見錯誤碼:
| 錯誤碼 | 原因 | 解決方式 |
|---|---|---|
| 400 | 請求格式錯誤 | 檢查 JSON 格式、必填欄位 |
| 401 | 認證失敗 | 確認 Access Key 正確 |
| 403 | 權限不足 | 確認 Table 已開放 API |
| 404 | 找不到資源 | 確認 App ID、Table 名稱 |
| 429 | 超過請求限制 | 降低請求頻率 |
| 500 | 伺服器錯誤 | 稍後重試 |
錯誤處理範例(Python):
import requests
import time
def api_call_with_retry(url, headers, payload, max_retries=3):
for attempt in range(max_retries):
try:
response = requests.post(url, headers=headers, json=payload)
if response.status_code == 200:
return response.json()
elif response.status_code == 429:
# 超過限制,等待後重試
time.sleep(60)
continue
else:
# 其他錯誤
print(f"錯誤 {response.status_code}: {response.text}")
return None
except Exception as e:
print(f"連線錯誤: {e}")
time.sleep(5)
continue
return None

實用技巧
一些提高效率的技巧。
API 測試工具
開發時可以用工具測試 API,不用寫程式。
推薦工具:
-
Postman
- 最流行的 API 測試工具
- 可儲存請求、環境變數
- 支援團隊協作
-
Insomnia
- 介面簡潔
- 開源免費
- 支援 GraphQL
-
curl
- 命令列工具
- 所有系統都有
- 適合快速測試
效能優化
讓 API 跑得更快。
建議:
-
使用 Selector 過濾
- 不要取全部資料再程式過濾
- 在 API 就指定條件
-
只取需要的欄位
- 減少傳輸資料量
-
批次處理
- 多筆資料一次送
- 減少 API 呼叫次數
-
快取機制
- 不常變動的資料可快取
- 減少重複呼叫
監控與日誌
追蹤 API 使用狀況。
建議做法:
- 記錄每次 API 呼叫的時間、結果
- 監控錯誤率
- 設定異常警報
- 定期檢視使用量
FAQ
AppSheet API 免費嗎?
不是。需要 Core 方案以上才能使用 API。
詳細費用請參考 AppSheet 費用解析。
API 有請求次數限制嗎?
有。Core 方案每分鐘 10 次,Enterprise 更高。
超過限制會收到 429 錯誤,需等待後重試。
可以從前端直接呼叫 AppSheet API 嗎?
技術上可以,但強烈不建議。
API Key 會暴露在前端程式碼,任何人都能看到並濫用。
應該從後端伺服器呼叫 API。
AppSheet API 支援 GraphQL 嗎?
不支援。AppSheet 只提供 REST API。
如果需要 GraphQL,要自己建一層中間層轉換。
如何取得多個 Table 的資料?
需要分別呼叫每個 Table 的 API。
AppSheet API 不支援 JOIN 或一次查詢多個 Table。
Webhook 和 API 有什麼不同?
API(主動呼叫):
- 你主動向 AppSheet 請求資料
- 適合:需要資料時才取
Webhook(被動接收):
- AppSheet 有事件時通知你
- 適合:即時反應、事件驅動
如果想用 Webhook 串接 LINE,請參考 AppSheet LINE 整合教學。
下一步
API 串接設定完成後,你的 AppSheet 就能和外部系統連動了。
繼續學習
- AppSheet 完整指南:了解所有功能
- AppSheet Automation 教學:設定自動化觸發 Webhook
- AppSheet LINE 整合:用 API 發送 LINE 通知
- AppSheet 費用解析:確認你的方案支援 API
實作建議
- 先用 Postman 測試:確認 API 可用再寫程式
- 做好錯誤處理:網路不穩、限流都要處理
- 注意安全性:API Key 別放前端、定期更換
- 監控使用量:避免超過限制被擋
想看更多整合應用案例,可以參考 AppSheet 範例大全。
需要專業的系統整合?
API 串接涉及安全性、效能、錯誤處理等專業考量。
常見的整合需求:
- 電商平台訂單同步
- ERP 系統資料整合
- 自動化工作流程設計
- 多系統資料同步
預約架構諮詢,讓我們幫你規劃完整的整合架構。
參考資料
- AppSheet Documentation - REST API Reference
- AppSheet API v2 Guide
- Google Cloud - AppSheet Integration Best Practices
相關文章
AppSheet LINE 整合教學:打造 LINE 通知機器人【2025】
AppSheet 與 LINE 整合完整教學:使用 LINE Notify 發送通知,4 步驟設定 Webhook,打造訂單通知、審核提醒、異常警示機器人。
AppSheetAppSheet 是什麼?2025完整教學指南|免費開始、範例、費用一次看
完整解析 Google AppSheet 無程式碼開發平台。從基礎教學到進階功能,包含費用方案、實用範例、中文介面設定,教你快速打造專屬 App。
AppSheetAppSheet Automation 自動化完整教學|4 個實用範例【2025】
AppSheet Automation 完整教學:Event 觸發條件、Process 流程、Task 任務設定,4 個實用範例教你打造自動化工作流程。