如何使用google spreadsheet feeds
api从多个工作表中获取Feed?
URL下方仅从第一张表中提取Feed。在我的spreadsheet
我3 work sheets
,我也希望获取剩余的工作表数据。
https://spreadsheets.google.com/feeds/list/XXXXMYKEYXXXX/od6/public/values?alt=json-in-script
如何获取它们?
我在下面尝试过没有成功:
https://spreadsheets.google.com/feeds/list/XXXXMYKEYXXXX/od7/public/values?alt=json-in-script
注意od7
而不是od6
更新 电子表格Feed的网址是 https://spreadsheets.google.com/feeds/list/1c53H0piyduOV6zRwS54A7MDZ3SooJOmj4O52Xd0dyIA/od6/public/values?alt=json-in-script
在电子表格中,我有TopicA
,TopicB
,TopicC
张。 Feed响应仅包含TopicA
信息。
答案 0 :(得分:19)
似乎工作表ID的编号从1到n,而不是od6,od7。
使用下面的网址,我能够获得单个工作表的数据
https://spreadsheets.google.com/feeds/list/1c53H0piyduOV6zRwS54A7MDZ3SooJOmj4O52Xd0dyIA/1/public/values?alt=json获取第一个工作表
https://spreadsheets.google.com/feeds/list/1c53H0piyduOV6zRwS54A7MDZ3SooJOmj4O52Xd0dyIA/2/public/values?alt=json第二张
https://spreadsheets.google.com/feeds/list/1c53H0piyduOV6zRwS54A7MDZ3SooJOmj4O52Xd0dyIA/3/public/values?alt=json第3张等等
请注意网址中的密钥(1c53H0piyduv6zRwS54A7MDZ3SooJOmj4O52Xd0dyIA)之后的/1
,/2
和/3
答案 1 :(得分:3)
要确定给定电子表格的工作表Feed的网址,请找到 电子表格在电子表格Feed中的条目,如中所述 上一节。然后检查具有的链接元素 相对= “http://schemas.google.com/spreadsheets/2006#tablesfeed”。那 element的href值提供该电子表格的URL 工作表提要。
要请求给定电子表格中的工作表列表,请发出GET 使用适当的授权标头请求该URL:
获取https://spreadsheets.google.com/feeds/worksheets/key/private/full
返回的结果包含该电子表格中每个工作表的URL,然后您可以查询该URL以从要从中获取数据的每个工作表中提取信息。因此,在您的示例中, od6 是一个有效的worksheetId,但您必须从电子表格的Feed中识别其他workheetIds。
答案 2 :(得分:1)
基于suman j的答案,这里是一种使用jQuery加载多张工作表的方法,无论有多少工作表。
加载电子表格的主要JSON提要,找到返回的JSON中每个工作表的网址,稍微调整网址,然后再加载该网址。然后使用ajaxStop
来完成加载完成后需要执行的任何操作。
$(function(){
var feedurl_start = "https://spreadsheets.google.com/feeds/";
var feedkey = "1c53H0piyduOV6zRwS54A7MDZ3SooJOmj4O52Xd0dyIA";
$.getJSON(feedurl_start+"worksheets/"+feedkey+"/public/basic?alt=json", function(sheetfeed) {
$.each(sheetfeed.feed.entry, function(k_sheet, v_sheet){
var sheeturl = v_sheet.link[0]["href"]+"?alt=json";
sheeturl = sheeturl.replace("basic", "values");
var sheet_title = v_sheet.content["$t"]; // to know which sheet you're dealing with
console.log(sheet_title);
$.getJSON(sheeturl, function(sheetjson){
console.log(sheetjson);
});
});
});
});
// Since you're making multiple AJAX calls, use ajaxStop
// to do whatever you need to do AFTER everything is loaded
$( document ).ajaxStop(function() {
// now all your data is loaded, so you can use it here.
});