4

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

电子表格提要的更新 URL 是 https://spreadsheets.google.com/feeds/list/1c53H0piyduOV6zRwS54A7MDZ3SooJOmj4O52Xd0dyIA/od6/public/values?alt=json-in-script

在电子表格中,我有TopicA, TopicB,TopicC工作表。提要响应TopicA仅包含信息。

4

3 回答 3

20

似乎工作表 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 第三张表等等

注意/1,/2/3url 中的键 (1c53H0piyduOV6zRwS54A7MDZ3SooJOmj4O52Xd0dyIA) 之后

于 2014-07-10T12:52:27.207 回答
3

根据Google 电子表格 API

要确定给定电子表格的工作表提要的 URL,请在电子表格提要中找到该电子表格的条目,如上一节所述。然后检查具有 rel="http://schemas.google.com/spreadsheets/2006#tablesfeed" 的链接元素。该元素的 href 值提供了该电子表格的工作表提要的 URL。

要请求给定电子表格中的工作表列表,请向该 URL 发出 GET 请求,并带有适当的授权标头:

获取https://spreadsheets.google.com/feeds/worksheets/key/private/full

返回的结果包含该电子表格中每个工作表的 URL,然后您可以查询该 URL 以从要从中获取数据的每个工作表中提取信息。因此,在您的示例中,od6是一个有效的 worksheetId,但您必须从电子表格的提要中辨别出其他 worksheetId。

于 2014-07-09T20:44:21.247 回答
1

基于 suman j 的回答,这里有一种使用 jQuery 加载多个工作表的方法,无论有多少工作表。

加载电子表格的主要 JSON 提要,在返回的 JSON 中找到每个工作表的 url,稍微调整 url,然后也加载那个。然后用于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.
});
于 2017-04-07T15:33:06.033 回答