You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google Sheets中无需事件监听器获取text/event-stream单条响应

Google Apps Script 本身是同步执行的 runtime,不支持浏览器端的 EventSource API,也没有事件循环等待异步回调触发,你之前用的 polyfill 是适配浏览器环境的,在 Apps Script 中无法生效,脚本执行完成后进程会直接退出,自然等不到 message 事件的返回。

你不需要用 EventSource 就能实现需求,直接调用 Apps Script 内置的 UrlFetchApp 发起普通 GET 请求即可,text/event-stream 本质是流式返回的纯文本内容,只取第一条响应的话直接解析返回的文本内容就行,示例代码如下:

function getRplantTotal() {
  const apiUrl = "https://pool.rplant.xyz/api2/poolminer2x/raptoreum/RThRfoQJg8qsoStLk7QdThQGmpbFUCtvnk/UlRoUmZvUUpnOHFzb1N0TGs3UWRUaFFHbXBiRlVDdHZua3x4";
  const fetchOptions = {
    headers: {
      "Accept": "text/event-stream"
    },
    muteHttpExceptions: true
  };
  // 同步等待请求返回,不需要异步处理
  const response = UrlFetchApp.fetch(apiUrl, fetchOptions);
  const rawContent = response.getContentText();
  // 按行解析SSE格式,提取第一条data字段的内容
  const contentLines = rawContent.split("\n");
  let firstResponseData = "";
  for (let line of contentLines) {
    if (line.startsWith("data:")) {
      firstResponseData = line.slice(5).trim();
      break;
    }
  }
  // 输出结果,也可以直接写入表格对应单元格
  console.log(firstResponseData);
  // 如需写入当前激活工作表的A1单元格,可取消下面一行的注释
  // SpreadsheetApp.getActiveSheet().getRange("A1").setValue(firstResponseData);
  return firstResponseData;
}

SSE 的响应格式非常简单,每一条消息的内容都会以 data: 为行开头,不同消息之间用空行分隔,你只需要第一条数据的话,解析到第一个 data: 开头的行就可以终止处理。

内容的提问来源于stack exchange,提问作者Kyle Dixon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:24:03