如何用Apps Script在Google Sheets更新时获取数据并发送至安卓应用
Google Sheets编辑触发Apps Script并推送数据到安卓端实现方案
完全可以实现该需求,整体分为三个核心实现环节,具体操作如下:
1. 配置编辑事件触发器
Apps Script提供两种编辑触发机制,这里推荐使用可安装编辑触发器,相比简单onEdit()触发器,它没有权限限制,支持调用外部接口、访问用户敏感数据,适配推送场景需求。
你可以通过两种方式创建触发器:
- 手动创建:打开Google Sheets的「扩展程序」-「Apps Script」,进入项目后点击左侧「触发器」-「添加触发器」,选择要触发的函数,事件来源选「电子表格」,事件类型选「编辑」,保存后完成授权即可。
- 代码创建:在Apps Script编辑界面运行一次以下代码即可自动生成触发器:
function createEditTrigger() { const ss = SpreadsheetApp.getActive(); ScriptApp.newTrigger('handleSheetEdit') .forSpreadsheet(ss) .onEdit() .create(); }
2. 编写数据校验逻辑
触发函数执行时,会自动携带编辑事件对象,可以直接获取编辑区域、编辑内容、编辑位置等信息,你可以根据业务需求自定义校验规则,示例如下:
function handleSheetEdit(e) { // 获取编辑的范围和内容 const editRange = e.range; const editSheet = editRange.getSheet(); const editValue = e.value; const rowData = editSheet.getRange(editRange.getRow(), 1, 1, editSheet.getLastColumn()).getValues()[0]; // 自定义校验规则示例:仅处理Sheet1的编辑、B列内容非空、A列手机号格式符合要求 if (editSheet.getName() !== 'Sheet1') return; if (!rowData[1]) { editRange.setBackground('#ffcccc'); // 校验失败标红单元格 return; } const phoneReg = /^1[3-9]\d{9}$/; if (!phoneReg.test(rowData[0])) { editRange.setBackground('#ffcccc'); return; } // 校验通过,执行推送逻辑 pushDataToAndroid(rowData); }
3. 对接安卓端推送通道
根据你的安卓应用实际部署情况,可选择两种推送方案:
- 方案1:安卓端部署公网可访问的HTTP接收接口,Apps Script直接调用接口推送数据
示例代码:function pushDataToAndroid(data) { const apiUrl = '你的安卓端接收接口地址'; const options = { method: 'post', contentType: 'application/json', payload: JSON.stringify({ data: data, editTime: new Date().toLocaleString() }) }; UrlFetchApp.fetch(apiUrl, options); } - 方案2:通过FCM(Firebase云消息传递)中转推送,无需安卓端暴露公网接口,适合普通移动应用场景
你需要先在安卓应用集成FCM SDK,获取设备推送token,然后Apps Script调用FCM接口发送推送即可,示例逻辑:function pushDataToAndroid(data) { const fcmUrl = 'https://fcm.googleapis.com/fcm/send'; const fcmServerKey = '你的FCM服务端密钥'; const androidDeviceToken = '目标安卓设备的推送token'; const options = { method: 'post', contentType: 'application/json', headers: { Authorization: `key=${fcmServerKey}` }, payload: JSON.stringify({ to: androidDeviceToken, data: { sheetData: data, editTime: new Date().toLocaleString() } }) }; UrlFetchApp.fetch(fcmUrl, options); }
注意事项
- 首次创建触发器和运行代码时,需要完成Google账号授权,允许脚本访问电子表格和发起网络请求
- 所有网络请求必须使用HTTPS协议,Apps Script不支持未加密的HTTP请求
- 你可以根据业务需求调整校验规则,也可以在推送数据中加入编辑用户邮箱、编辑位置等附加信息
内容的提问来源于stack exchange,提问作者Frank Roland Fernandes
相关产品推荐
相关产品推荐

