You need to enable JavaScript to run this app. 如何用Apps Script在Google Sheets更新时获取数据并发送至安卓应用
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 04:21:02