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

如何在Google Sheets脚本中获取并展示API POST请求返回结果

解决Google Sheets中API POST响应输出及nonce格式问题

我来帮你搞定这两个问题——把API POST的返回内容(包括错误信息)写入Google Sheets,还有nonce没有引号的疑问。

一、先解决nonce无引号的问题

你看到nonce输出没引号,是因为new Date().getTime()返回的是数字类型,JSON序列化时数字不会自动加引号。如果你的API要求nonce是字符串格式,只需要把它转成字符串就行:

var nonce = new Date().getTime().toString();

这样用JSON.stringify()处理后,nonce就会带双引号出现在请求体里了。

二、将API响应(含错误)写入Google Sheets

要实现把返回内容(不管成功还是失败)填充到相邻单元格,你需要做这几件事:

  1. 捕获请求过程中的所有错误(比如HTTP错误码)
  2. 获取响应的状态码和内容
  3. 定位到Sheet的单元格,把内容写入

修改后的完整代码

function testPost() {
  // 获取当前活动的工作表(也可以用openById指定特定表格,比如SpreadsheetApp.openById("你的表格ID").getSheetByName("Sheet1"))
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  // 定义起始单元格,比如从A1开始写入
  var startCell = sheet.getRange("A1");

  try {
    // 把nonce转为字符串,确保JSON序列化后带引号
    var nonce = new Date().getTime().toString();
    var data = {
      'key':'QrHuXeXcbN',
      'signature':'c4cc0d98be8e0860391799c2ca719da5ea6514f1538c4ec69ec1c19',
      'nonce':nonce
    };
    var options = {
      'method' : 'post',
      'contentType': 'application/json',
      'payload' : JSON.stringify(data),
      // 开启这个选项,让请求遇到错误时不直接抛出异常,而是返回响应对象
      'muteHttpExceptions': true
    };
    var response = UrlFetchApp.fetch('https://requestb.in/19bzt9a1', options);
    
    // 获取HTTP响应码(比如200=成功,400=参数错误,500=服务器错误)
    var responseCode = response.getResponseCode();
    // 获取响应的原始文本内容,尝试解析成格式化的JSON(如果响应是JSON格式的话)
    var responseContent = response.getContentText();
    try {
      // 解析并格式化JSON,让内容更易读
      responseContent = JSON.stringify(JSON.parse(responseContent), null, 2);
    } catch (e) {
      // 如果响应不是JSON格式,就保留原始文本
    }

    // 把响应码写入起始单元格,响应内容写入右侧相邻单元格
    startCell.setValue("响应码: " + responseCode);
    startCell.offset(0, 1).setValue("响应内容:\n" + responseContent);

  } catch (error) {
    // 捕获请求过程中出现的其他错误,比如网络问题,写入Sheet
    startCell.setValue("请求异常");
    startCell.offset(0, 1).setValue(error.toString());
  }
}

关键代码解释

  • muteHttpExceptions: true:这个参数很重要,它能让UrlFetchApp在遇到4xx/5xx这类错误时,不直接中断脚本,而是返回完整的响应对象,这样你就能获取到具体的错误码和错误信息了。
  • response.getResponseCode():获取HTTP状态码,帮你快速判断请求是成功还是失败。
  • startCell.offset(0, 1):通过offset方法定位到起始单元格的右侧相邻单元格,实现你要的"填充到相邻单元格"的需求。
  • 双层try-catch:外层捕获请求的整体错误,内层处理响应内容的JSON解析,确保各种情况都能被处理,不会导致脚本崩溃。

现在运行这个脚本,你就能在Google Sheets的A1和B1单元格里看到请求的响应码和对应的内容了,nonce也会以带引号的形式出现在RequestBin的请求体中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:37:58