如何每月使用导入数据自动更新 Google 电子表格?
Posted
技术标签:
【中文标题】如何每月使用导入数据自动更新 Google 电子表格?【英文标题】:How to auto-update Google Spreadsheet with import data each month? 【发布时间】:2013-12-08 10:48:48 【问题描述】:我想存储我所在地区的英国警方犯罪数据。 英国警方每个月都会用新数据更新police.uk。这可以通过两种方式访问: 1. CSV。我所在地区的犯罪是 this 这可作为 CSV 文件下载(1. & 2. 2. 通过 API 实现 JSON。信息here - 我还没有解决这个问题。
问题:网页和 CSV 仅显示过去六个月的数据。 我想创建一个每月更新的 Google Drive 电子表格,以持续添加最新数据,以便随着时间的推移保留所有数据。
我真的不知道如何解决这个问题,尤其是在 API 方面。 我应该使用 ImportData 等标准电子表格函数、Google 电子表格的脚本编辑器,还是使用我不知道的 Python 等编程语言?
谢谢。
【问题讨论】:
【参考方案1】:多么有趣!我从来不知道警察有我们可以使用的数据 API!我建议使用 Google Apps Script,您可以使用它轻松导入 JSON 数据。
例如,要首先获取数据,您可以像这样使用URL Fetch Service:
var data = UrlFetchApp.fetch("http://data.police.uk/api/crimes-street/all-crime?lat=52.629729&lng=-1.131592&date=2013-01");
这将返回原始 JSON 数据供您使用。
然后您可以遍历对象,将它们添加到数组中以添加到电子表格中。一个完整的函数可能如下所示。 我知道它非常混乱。现在我知道这个警察 API 存在我计划(当我有空闲时间时)设置类似的东西,当我有更好的解决方案时我会更新这个答案,但我已经测试了以下内容,它确实将所有数据从 URL 写入电子表格。
function importPoliceData()
var data = UrlFetchApp.fetch("http://data.police.uk/api/crimes-street/all-crime?lat=52.629729&lng=-1.131592&date=2013-01");
var jsonData = JSON.parse(data.getContentText());
var dataArray = [];
for(var i = 0; i < jsonData.length; i++)
var thisRow = [];
for(var a in jsonData[i])
if(typeof jsonData[i][a] == 'object')
for(var o in jsonData[i][a])
if(typeof jsonData[i][a][o] == 'object')
for( var p in jsonData[i][a][o])
thisRow.push(jsonData[i][a][o][p]);
else
thisRow.push(jsonData[i][a][o]);
else
thisRow.push(jsonData[i][a]);
while(thisRow.length != 13)
thisRow.push("");
dataArray.push(thisRow);
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange(1,1,dataArray.length, dataArray[0].length);
range.setValues(dataArray);
【讨论】:
谢谢。那么这应该在单元格中使用 =importPoliceData() 调用吗?错误说我无权在第 64 行运行 setValues。因此,这会将 2013 年 1 月一个月的数据转储到工作表中。我想知道如何将其设置为每月自动添加最新月份的数据。 @RobertAndrews 是的,你是对的,它不会将数据附加到电子表格的末尾,它只是将数据转储到其中。我希望很快有时间将一个函数放在一起,该函数可以在每个月底触发以附加数据,然后我会很高兴地与您分享。但是没有,您可以从脚本管理器中调用它。以上是关于如何每月使用导入数据自动更新 Google 电子表格?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Google 电子表格中的 Google Apps 脚本自动更新“站点地图”功能?
如何将用户的电子邮件/电话/地址上传到Google Analytics?
将 Google 电子表格 CSV 导入 Pandas 数据框