带有多个工作表的Google电子表格供稿

时间:2014-07-09 20:37:02

标签: google-spreadsheet-api google-feed-api

如何使用google spreadsheet feeds api从多个工作表中获取Feed? URL下方仅从第一张表中提取Feed。在我的spreadsheet3 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

在电子表格中,我有TopicATopicBTopicC张。 Feed响应仅包含TopicA信息。

3 个答案:

答案 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)

the Google Spreadsheets API

  

要确定给定电子表格的工作表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.
});