使用jQuery访问Google Spreadsheet的JSON数据,无法提取urltorecord字段求助
解决Google Sheets JSON数据中提取urltorecord字段的问题
我明白你遇到的问题了——你用的public/basic类型的Google Sheets feed返回的content.$t是一段拼接的文本,不是结构化的对象,所以没法直接通过属性名提取urltorecord字段。下面给你两种可行的解决方案:
方案1:解析content.$t的文本内容
public/basic feed里的content.$t格式是每个字段一行(比如urltorecord: https://example.com/record1),我们可以把这段文本分割成键值对,转换成对象后再提取字段:
var $url = 'https://spreadsheets.google.com/feeds/list/1eyzMLOARApWp9phgQkjLChYdVNaipuPJmdbg84MKXLg/od6/public/basic?alt=json'; $.getJSON($url, function(data) { // 遍历每个表格条目 data.feed.entry.forEach(function(entry) { var contentStr = entry.content.$t; // 按换行分割成单个键值对 var keyValueArr = contentStr.split('\n'); var itemData = {}; // 逐个处理键值对 keyValueArr.forEach(function(pair) { var splitParts = pair.split(': '); if (splitParts.length === 2) { var fieldName = splitParts[0].trim(); var fieldValue = splitParts[1].trim(); itemData[fieldName] = fieldValue; } }); // 现在可以直接访问urltorecord字段了 console.log(itemData.urltorecord); }); });
方案2:改用更结构化的public/values feed
推荐用这种方法,因为public/values feed返回的JSON已经把每个字段结构化了,不需要手动解析文本。只需要把URL里的basic改成values,然后通过gsx$字段名.$t来访问:
// 替换URL中的basic为values var $url = 'https://spreadsheets.google.com/feeds/list/1eyzMLOARApWp9phgQkjLChYdVNaipuPJmdbg84MKXLg/od6/public/values?alt=json'; $.getJSON($url, function(data) { data.feed.entry.forEach(function(entry) { // 注意:字段名会被转为小写,空格会替换成下划线 var urltorecordValue = entry.gsx$urltorecord.$t; console.log(urltorecordValue); }); });
小提示:如果你的表格列名有空格(比如"URL to Record"),对应的属性名会变成
gsx$urltorecord(全小写,空格转下划线)。
第二种方案更稳定,能避免文本分割时可能出现的异常(比如字段值里包含冒号的情况),优先推荐使用。
内容的提问来源于stack exchange,提问作者AntonioA
相关产品推荐
相关产品推荐

