1

提供给我的代码通过将网络抓取的数据保存在谷歌表格中来工作,但是,当它保存数据时,它会从先前安排的网络抓取中创建相同数据条目的副本。有没有办法我们可以创建一个代码,它只保存唯一的行并添加编辑/更新的信息?我添加了以下代码:

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);
}

编辑:

4

1 回答 1

1

不是确切的解决方案,但 sheet-api 的DeleteDuplicatesRequest应该可以工作。

我没有测试过,但这应该可以。(我想你使用 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)
于 2020-08-11T14:40:44.650 回答