如何在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
要实现把返回内容(不管成功还是失败)填充到相邻单元格,你需要做这几件事:
- 捕获请求过程中的所有错误(比如HTTP错误码)
- 获取响应的状态码和内容
- 定位到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
相关产品推荐
相关产品推荐

