Избавьтесь от сохраненных дубликатов данных, извлеченных из Интернета, в 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);
}
Редактировать:
Вкладка "Zapier Tax Leads" - это место, где код копирует повторяющиеся данные.
На вкладке "Текущие налоговые поступления" мы будем обновлять только столбцы с H по O.
Ссылка на электронную таблицу: https://docs.google.com/spreadsheets/d/1G1PLs46cnQ-CyJWBI0ibKNmYosSEQRcrAGE8Qx2MArU/edit?usp=sharing
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)