在Google表格中,使用脚本,如何仅更新从API调用中获取的新记录?

时间:2017-10-11 19:36:46

标签: google-apps-script google-sheets

我每天都会从外部API获取数据到Google表格。数据按日期排序。每天大约有20条新记录。

当数据更新时,我想将任何新数据添加为新行。我将自己的注释添加到数据中,因此必须按顺序排列。目前我将数据复制到另一张表,然后在那里做笔记。

我遇到的问题是,有时会添加新数据,其中日期可能是一个月左右。因此,我总是需要获取大约600条记录,并且可能会或可能不会在过去的某个日期添加新的内容。

我想将这些新数据自动添加为工作表中的新行。

所以,我必须以某种方式识别新记录并将它们添加为新行。有人想过如何有效地做到这一点吗?

对于我从API获得的每条记录来说,循环遍历整个工作表并不是一个好主意...

我应该使用数据库吗?或者我可以加载所有API数据和所有工作表数据,并快速添加新的工作表数据吗?

1 个答案:

答案 0 :(得分:0)

您可以安装一个触发器来检测电子表格中的行插入。

这些插入将被捕获为onChange()事件。

function installTrigger() {
  var ss = SpreadsheetApp.getActive();
  ScriptApp.newTrigger('onChange')
    .forSpreadsheet(ss)
    .onChange()
    .create();
}  

function onChange(x) {
  if (x.changeType == "INSERT_ROW") {
    var r = SpreadsheetApp.getActiveRange().getRow();
    Logger.log(r);
    //Do something with row r
    //If multiple rows can be inserted at once, you might need to check the height of the range
  }
}