Csv 如何每月使用导入数据自动更新Google电子表格?

Csv 如何每月使用导入数据自动更新Google电子表格?,csv,google-apps-script,google-sheets,Csv,Google Apps Script,Google Sheets,我想存储我所在地区的英国警方犯罪数据。 英国警方每月向police.UK更新新数据。这有两种途径: 1.CSV。我所在地区的罪案是这是可下载的CSV(& 2.JSON通过API.Info-我还没有解决这个问题 问题是:网页和CSV只显示过去六个月的数据。 我想创建一个GoogleDrive电子表格,每月更新,不断添加最新数据,以便随着时间的推移保留所有数据 我真的不知道如何解决这个问题,尤其是在API方面。 我应该使用标准的电子表格函数,比如ImportData、googlespreadshee

我想存储我所在地区的英国警方犯罪数据。 英国警方每月向police.UK更新新数据。这有两种途径: 1.CSV。我所在地区的罪案是这是可下载的CSV(& 2.JSON通过API.Info-我还没有解决这个问题

问题是:网页和CSV只显示过去六个月的数据。 我想创建一个GoogleDrive电子表格,每月更新,不断添加最新数据,以便随着时间的推移保留所有数据

我真的不知道如何解决这个问题,尤其是在API方面。 我应该使用标准的电子表格函数,比如ImportData、googlespreadsheets的脚本编辑器,或者甚至使用像Python这样的编程语言,我不知道


谢谢。

太有趣了!我从来不知道警方有我们可以使用的数据API!我建议使用Google Apps脚本,你可以使用它轻松导入JSON数据

例如,要首先获取数据,可以使用类似的方法:

这将返回原始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(){
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=[];
对于(var i=0;i
谢谢。那么应该用=importPoliceData()调用它吗在单元格中?错误表示我没有权限在第64行运行setValues。因此这会将2013年1月的一个月数据转储到工作表中。我想知道如何将其设置为每月连续自动添加最近一个月的数据。@RobertAndrews是的,您是对的,它不会将数据附加到电子表格的末尾,只是简单地添加而已mps将数据放入其中。我希望很快有时间将一个函数组合在一起,该函数可以在每个月底触发以附加数据,然后我将很高兴地与您共享它。但是,您不会从脚本管理器中调用它。
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);
}