无代码背景求助:谷歌表格连接DFBP开源库搜活性肽时JSON解析报错
解决谷歌表格App Script调用DFBP肽库接口返回JSON解析错误的问题
你遇到的SyntaxError: Unexpected token '<'错误,核心原因是目标URL返回的不是JSON格式数据,而是HTML网页内容。http://www.cqudfbp.net/proteins/subclass/source_list_display.jsp是前端展示页面,并非提供JSON数据的API接口,直接对其返回内容做JSON解析自然会失败。
以下是具体解决步骤:
第一步:定位真实的搜索接口
手动打开该jsp页面,输入搜索关键词后,打开浏览器「开发者工具-网络」面板,观察搜索操作触发的真实请求:包括接口地址、请求方式(GET/POST)、需要提交的参数格式。多数网站的搜索功能是通过POST表单提交,或是有专门的API接口,而非直接拼接URL参数。第二步:修改代码适配真实接口
假设通过开发者工具查到真实API接口地址,且需要POST提交参数,代码可调整为:function openSourceSearch(query) { var apiUrl = "真实API接口地址"; var options = { method: "post", contentType: "application/x-www-form-urlencoded", payload: { keyword: query, SearchNum: 2 // 这里补充查到的其他必填参数 } }; var response = UrlFetchApp.fetch(apiUrl, options); var data = JSON.parse(response.getContentText()); var output = []; for (var i = 0; i < data.results.length; i++) { output.push([data.results[i].title, data.results[i].url]); } return output; }第三步:处理权限与跨域问题
若调用接口时出现权限报错,需在App Script编辑器中,进入「编辑-项目属性-范围」,确认已添加https://www.googleapis.com/auth/script.external_request权限,或在首次运行代码时完成对应权限的授权。备选方案:解析HTML提取数据
如果网站无公开API,只能解析返回的HTML内容,可使用正则表达式或XmlService提取信息(稳定性依赖页面结构,需根据实际HTML调整):function openSourceSearch(query) { var url = "http://www.cqudfbp.net/proteins/subclass/source_list_display.jsp?SearchNum=2&keyword=" + encodeURIComponent(query); var response = UrlFetchApp.fetch(url); var html = response.getContentText(); var output = []; // 示例正则,需根据页面实际HTML结构修改 var linkRegex = /<a href="([^"]+)"[^>]*>([^<]+)<\/a>/g; var matchResult; while ((matchResult = linkRegex.exec(html)) !== null) { output.push([matchResult[2], matchResult[1]]); } return output; }
内容的提问来源于stack exchange,提问作者Syafiqah Afandi
相关产品推荐
相关产品推荐

