Избавьтесь от сохраненных дубликатов данных, извлеченных из Интернета, в Google Таблицах

Код, который мне был предоставлен, работает путем сохранения данных, извлеченных из Интернета, в таблицах Google, однако, когда он сохраняет данные, он создает дубликаты той же записи данных из ранее запланированных веб-циклов. Есть ли способ создать код, в котором он сохраняет только уникальные строки и добавляет отредактированную / обновленную информацию? Я добавил код ниже:

function myFunction() {
  SpreadsheetApp.getActiveSheet().getRange('A1').setValue('=importdata("https://www.parsehub.com/api/v2/projects/tZOywrNXQ3Q4/last_ready_run/data?api_key=tn6CGEyTTVxE&format=csv")')
}
// custom menu function
function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Custom Menu').addItem('Save Data','saveData').addToUi().
}
// function to save data
function saveData() { 
  var ss=SpreadsheetApp.getActiveSpreadsheet(); 
  var sh4=ss.getSheetByName('Zapier Tax Leads'); 
  var sh3=ss.getSheetByName('Current Tax Leads') 
  var data=sh3.getRange(1,1,sh3.getLastRow(),33).getValues(); 
  sh4.getRange(sh4.getLastRow()+1,1,data.length,data[0].length).setValues(data);
}
function removeDuplicates() {
var sheet = SpreadsheetApp.getActive().getSheetByName('Zapier Tax Leads')
var data = sheet.getDataRange().getValues();
var newData = new Array();
for(i in data){
var row = data[i];
var duplicate = false;
for(j in newData){
  if(row.join() == newData[j].join()){
    duplicate = true;
  }
}
if(!duplicate){
  newData.push(row);
}
}
sheet.clearContents();
sheet.getRange(1, 1, newData.length, 
newData[0].length).setValues(newData);
}

Редактировать:

1 ответ

Не точное решение, но DeleteDuplicatesRequest листа api должен работать.

Я не тестировал, но это должно работать. (Я полагаю, вы используете пакет дисков для nodejs?)

var requests = {
   "requests": [{
        "deleteDuplicates": {
            //rows to operate on
            //first value is kept if there are duplicates
            "range": {
                    "sheetId": integer,
                    "startRowIndex": integer,
                    "endRowIndex": integer,
                    "startColumnIndex": integer,
                    "endColumnIndex": integer
            }
            ,
            // The columns in the range to analyze for duplicate values.
            //  If no columns are selected then all columns are
            //  analyzed for duplicates.
            "comparisonColumns": [{
                    "sheetId": integer,
                    "dimension": "COLUMNS",
                    "startIndex": integer,
                    "endIndex": integer
             }]
          }
    }]
 }

sheets.spreadsheets.values.batchUpdate(spreadsheetId=spreadsheet_id,body=requests)