Google Apps Script调用Snov.io GET接口返回HTML而非JSON问题求助
问题原因
核心问题是 Google Apps Script 中 UrlFetchApp 的 GET 请求参数传递方式错误:
- Python 的
requests.get方法的params参数会自动将参数拼接为 URL 查询字符串,符合 GET 请求的参数传递规范 - 但
UrlFetchApp中的payload字段是为 POST、PUT 等需要请求体的请求设计的,GET 请求添加payload后,参数会被放到请求体中,服务端无法识别 GET 请求的请求体参数,因此触发服务端错误,返回报错 HTML 页面。 - 你贴出的 AppScript 代码片段本身还有语法错误:params 对象缺少开头的变量声明和左大括号。
修正后可运行代码
function getSnovEmails(token, site) { // 构造请求参数 const params = { 'access_token': token, 'domain': site, 'type': 'all', 'limit': 100, 'lastId': 0, }; // 手动将参数转为查询字符串拼接到URL后 const queryStr = Object.keys(params) .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`) .join('&'); const requestUrl = `https://api.snov.io/v2/domain-emails-with-info?${queryStr}`; // 发送GET请求,不需要payload字段 const response = UrlFetchApp.fetch(requestUrl, { method: 'get', muteHttpExceptions: true }); // 先校验响应状态再解析 if (response.getResponseCode() === 200) { const resData = JSON.parse(response.getContentText()); return resData.emails; } else { console.error('请求失败,状态码:' + response.getResponseCode() + ',错误信息:' + response.getContentText()); return []; } }
内容的提问来源于stack exchange,提问作者SKuan
相关产品推荐
相关产品推荐

