如何每月使用导入数据自动更新 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 电子钱包进行定期结算

如何将用户的电子邮件/电话/地址上传到Google Analytics?

将 Google 电子表格 CSV 导入 Pandas 数据框

使用Chartrangeslider进行Google可视化,并从Google文档电子表格导入数据

如何将 Google 工作区数据自动导入 Big Query 数据库?