将新的api数据附加到Google工作表

时间:2017-10-14 11:45:40

标签: json google-apps-script google-sheets

我有各种(JSON)api数据源,我想将其附加到Google工作表进行分析 - 理想情况下,每隔一两小时就会在时间戳旁边运行。

我对源格式化,我发现如何在google工作表中使用触发器使其运行每个' x'小时 - 这是我挣扎的附加位。我猜我需要一些代码来计算最后使用的行或列的位置,并为下一个追加添加一个?

就数据源而言,我使用此代码作为示例: http://blog.fastfedora.com/projects/import-json#ImportJSON和我的一个数据源(reddit)被提取出来:

=ImportJSON("http://reddit.com/r/redditdev/about.json", "/data/url,/data/subscribers", "")

这给出了如下输出:

Subscribers  Url
12114        /r/redditdev/

我希望结束输出看起来像:

Url            TimeStamp             Subscribers
/r/redditdev/  14/10/2017 11:00:00   12114    
/r/redditdev/  14/10/2017 12:00:00   12118
/r/<others>    x                     y          

任何帮助表示赞赏!感谢

1 个答案:

答案 0 :(得分:0)

我回来后写了一个小reddit爬虫。看起来在这里会有所帮助:github

但是要对它进行一些定制来完成你正在寻找的东西:

var date = Utilities.formatDate(new Date(), "America/Los_Angeles", "dd/MM/yyyy HH:mm:ss");
var subs = json_twoDarray[1][0], //first index is row, second is column
    url = json_twoDarray[1][1];
//Assuming there's a "sheet" variable for the sheet you are logging data to,
//get one past the last row and the first three columns and set the values
sheet.getRange(sheet.getLastRow + 1, 1, 1, 3).setValues([[url, date, subs]]); 

我通常还会将新数据添加到电子表格的顶部,以便首先显示最新数据,这通常非常好。如果您想这样做,可以将上面代码段的最后一行更改为:

sheet.insertRowBefore(2); //Assuming the first row is headers, insert a new second row
sheet.getRange(2,1,1,3).setValues([[url, date, subs]]); //add the data

我没有机会测试这些片段中的任何一个,但它们应该可以工作。如果您有任何问题,请告诉我。