为什么我的Google Sheets自定义函数出现formula parse error?
问题原因
你遇到的公式解析错误由以下核心原因导致:
- Google Sheets 公式原生语法不支持直接传入 JSON 键值对对象作为参数。公式中的大括号
{}仅用于构造一维/二维数组,仅支持按顺序存储值,不支持key:value的对象结构,你写的{"pages" : [...]}语法不符合 Sheets 公式规范,触发解析错误。 - 你定义的
URLS函数要求入参是带pages属性的对象,但 Sheets 自定义函数仅支持接收文本、数字、布尔值、单元格引用返回的数组这几类参数,无法直接识别你传入的对象结构。
修复方案
方案1:传JSON字符串后在函数内解析
修改调用公式,把参数转为合法的字符串传入,注意转义字符串内的双引号:
=URLS("{\"pages\" : [ { \"id\" : 0, \"page_url\" : \"...\" } ]}")
然后修改自定义函数代码,新增JSON解析逻辑:
/* * Formats the page urls */ function URLS(page_url_str){ const page_url_list = JSON.parse(page_url_str); const urls = []; for(let i = 0; i < page_url_list.pages.length; i++){ urls.push(page_url_list.pages[i].page_url + "\n"); } return urls; }
方案2:直接传入单元格区域
如果你的URL数据已经存储在表格的单元格区域内,直接传入对应区域的引用即可,自定义函数会自动收到二维数组格式的区域数据,你可以遍历数组提取需要的URL。
内容的提问来源于stack exchange,提问作者SenseiShizo
相关产品推荐
相关产品推荐

