如何对接Dear Inventory API与Google Sheets实现数据自动同步?
需求可行性结论
这个需求完全可以实现。Dear Inventory官方提供了公开的REST API支持外部系统拉取/推送产品、销售订单等数据,Google Sheets也提供了原生的Apps Script工具和开放API,二者对接没有技术障碍,自动更新也可以通过定时触发机制实现。
具体实现方法
方法1:使用Google Apps Script实现同步 (零额外成本、无需额外服务器,最适合非专业开发用户使用)
操作步骤如下:
- 首先登录Dear Inventory后台,在集成设置页面生成API凭证,获取Account ID和API Key,按需给凭证开通产品、销售订单相关的只读/读写权限
- 打开你需要存储数据的Google Sheets,点击顶部菜单「扩展程序」→「Apps Script」进入脚本编辑器
- 在编辑器中编写调用Dear API拉取数据的逻辑,示例代码片段参考:
// 拉取Dear产品清单示例 function syncDearProductsToSheet() { const DEAR_ACCOUNT_ID = "替换为你的Dear Account ID"; const DEAR_API_KEY = "替换为你的Dear API Key"; // 生成认证头 const authStr = `${DEAR_ACCOUNT_ID}:${DEAR_API_KEY}`; const encodedAuth = Utilities.base64Encode(authStr); const requestOptions = { method: "GET", headers: { "Authorization": `Basic ${encodedAuth}`, "Content-Type": "application/json" }, muteHttpExceptions: true }; // 调用Dear产品接口 const apiResponse = UrlFetchApp.fetch("https://inventory.dearsystems.com/ExternalApi/v2/Product", requestOptions); if (apiResponse.getResponseCode() === 200) { const productList = JSON.parse(apiResponse.getContentText()).Products; // 写入到对应sheet const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("产品清单"); targetSheet.clearContents(); // 写入表头 targetSheet.appendRow(["产品ID", "产品名称", "SKU", "库存数量", "成本价"]); // 遍历写入产品数据 productList.forEach(item => { targetSheet.appendRow([item.ID, item.Name, item.SKU, item.StockLevel, item.Cost]); }); } }
- 销售清单的同步逻辑和上述逻辑一致,仅需要将接口地址替换为Dear的销售订单接口,调整写入的表头和字段即可
- 配置自动更新规则:在Apps Script编辑器左侧菜单点击「触发器」,添加新触发器,选择你编写的同步函数,设置触发频率(可按分钟/小时/天/周自定义),保存后即可实现数据自动更新。
方法2:使用Python脚本定时运行 (适合有开发能力、需要自定义复杂逻辑的用户)
操作步骤如下:
- 同样先在Dear Inventory后台获取API凭证,然后前往Google Cloud控制台启用Google Sheets API,生成服务账号密钥文件,将服务账号的邮箱添加到目标Google Sheets的协作者列表,授予编辑权限
- 本地安装需要的依赖库:
pip install requests gspread oauth2client - 编写Python脚本:先通过
requests库调用Dear API拉取产品、销售数据,做对应的数据处理后,通过gspread库写入到Google Sheets的指定位置 - 在本地设备或者云服务器上配置定时任务(Linux系统用crontab,Windows系统用任务计划程序),按你需要的更新频率定时运行脚本即可。
注意事项
- 两个平台的API都有调用频率限制:Dear API默认每分钟最多调用100次,Google Sheets API免费版每分钟最多调用300次,不要设置过高的同步频率避免触发限流
- 不要将API凭证、服务账号密钥硬编码到公开的脚本或代码仓库中,避免账号数据泄露
- 同步逻辑中建议增加异常判断,接口请求失败时不要清空表格原有数据,避免数据丢失
内容的提问来源于stack exchange,提问作者Victoria
相关产品推荐
相关产品推荐

