仅追加唯一行

时间:2018-10-08 15:08:01

标签: google-apps-script google-sheets

我正在尝试读取外部JSON API,并将解析后的值从其中写入Google工作表。因此,每个API调用都会在工作表中写入新行。第二个要求是仅在该行包含已插入的行以外的内容时才写该行-换句话说,仅当该行唯一时才追加新行。

我已经完成了第一个要求。我已经使用过JSON.parseappendRow了,并且没有问题。

不幸的是,我无法满足第二个要求。我找不到任何结构,也找不到示例解决方案。

有人建议如何仅附加Google Apps脚本中的唯一行吗?

编辑:对于上述不准确的帖子,我表示歉意。这是详细信息。

下面提到的代码是我对第一个要求的解决方案:

function run() {

 var data = UrlFetchApp.fetch("https://url/json-api").getContentText();
 var json = JSON.parse(data);

 var last = (json.last);
 var credit = parseInt(json.credit); 

 var doc = SpreadsheetApp.openById("googleSheetID");
 var list = doc.getSheets()[0];


 list.appendRow([last, credit]);
}

因此,每次我运行脚本时,它只需追加新行。不幸的是,返回的JSON仅会不时更改。当我安排脚本每5分钟运行一次时,它将导致许多冗余行。

但是,在写入冗余行之后,我不想运行任何不同的命令。我想检查新解析的数据是否唯一,如果是的话,请写入-否则为空。

1 个答案:

答案 0 :(得分:1)

  • getLastRow的值,并检查其是否等于last / credit。然后,如果需要,则appendRow。

  • 脚本示例代码段:

    var lastRow=list.getRange(1,list.getLastRow(),1,2).getValues(); //[[prev.last,prev.credit]]
    if(lastRow[0][0]!=last && lastRow[0][1]!=credit){
     list.appendRow([last, credit]);
    }