Google Sheets通过Stripe API批量添加银行卡失败求助
批量添加Stripe银行卡异常问题修复
问题分析
核心问题是控制台输出了UrlFetchApp.Response对象的方法集合而非预期的JSON响应,同时代码存在性能冗余和请求配置不严谨的问题。
修复步骤及优化方案
1. 修正响应输出逻辑
原代码直接打印response对象,导致输出的是对象的方法列表,需改为调用getContentText()获取JSON格式的响应文本,与单卡成功逻辑保持一致。
2. 批量读取数据提升性能
循环内反复调用getRange()会大幅降低脚本执行效率,建议一次性读取所有目标数据到数组,再遍历数组处理。
3. 显式声明请求方法
虽然UrlFetchApp默认使用POST请求,但显式设置method: "POST"能让代码逻辑更清晰,避免潜在的请求方法错误。
修复后的完整代码
function StripeAddMultiCard(){ var PaymentSSID = "********************"; var WorkingSS = SpreadsheetApp.openById(PaymentSSID); var WorkingSheet = WorkingSS.getSheetByName("StripeToAdd"); // 一次性读取所有目标数据行 var CardsToAdd = WorkingSheet.getRange(1, 1).getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow() - 1; var allData = WorkingSheet.getRange(2, 1, CardsToAdd, 14).getValues(); // 遍历数据数组处理每一条记录 for (var i=0; i<allData.length; i++){ var rowData = allData[i]; var cardname = rowData[1]; // 第2列(索引从0开始) var cardno = rowData[2]; // 第3列 var cardcvc = rowData[4]; // 第5列 var custID = rowData[11]; // 第12列 var cardexpmo = rowData[12]; // 第13列 var cardexpyr = rowData[13]; // 第14列 var url= "https://api.stripe.com/v1/customers/" + custID + "/sources"; console.log("source[number]: " + cardno); console.log("source[exp_month]: " + cardexpmo); console.log("source[exp_year]: " + cardexpyr); console.log("source[cvc]: " + cardcvc); console.log("source[name]: " + cardname); console.log("request url: " + url); var params = { method: "POST", // 显式声明POST请求 headers: {Authorization: "Basic " + Utilities.base64Encode("sk_live_*********************:")}, payload: { "source[object]": "card", "source[number]": cardno, "source[exp_month]": cardexpmo, "source[exp_year]": cardexpyr, "source[name]": cardname, "source[cvc]": cardcvc }, muteHttpExceptions: true }; var response = UrlFetchApp.fetch(url, params); // 打印JSON格式的响应文本 console.log(response.getContentText()); Utilities.sleep(51); } }
额外提示
- 若需提取响应中的具体字段,可解析JSON后操作:
const jsonResponse = JSON.parse(response.getContentText()); console.log("已添加卡片ID: " + jsonResponse.id); - 调试阶段可暂时关闭
muteHttpExceptions: true,直接查看请求错误信息;生产环境建议开启并添加错误捕获逻辑。
内容的提问来源于stack exchange,提问作者Adam of City Compost
相关产品推荐
相关产品推荐

