Google Apps Script para encontrar y actualizar filas en una hoja de destino mediante un ID único y agregar filas únicas si el ID único no está en la hoja de destino.
¡Buen día a todos! Tengo estos códigos que quiero combinar en uno, pero tengo problemas para hacerlo.
Este es el primer código en el que se copian los datos de la hoja de origen a la hoja de destino, se agregan después de la última fila con datos.
function DE() {
let spreadSheet = SpreadsheetApp.getActiveSpreadsheet(); // activa el documento abierto
let sourceSheet = spreadSheet.getSheetByName('Support Sheet'); // selecciona la hoja de la que provendrán los datos
let sourceSheet2 = spreadSheet.getSheetByName('Data Entry'); // selecciona la hoja en la que se encuentra el nombre de la hoja
let sourceRange = sourceSheet.getDataRange();
let sourceRange2 = sourceSheet2.getDataRange();
let sourceValues = sourceRange.getValues();
let sourceValues2 = sourceRange2.getValues();
let sheetName = sourceValues2[1][1];
sourceValues = sourceValues.slice(1).map(row => row.slice(13,13+10));
let rowCount = sourceValues.length;
let columnCount = sourceValues[0].length;
let targetSheet = spreadSheet.getSheetByName(sheetName);
let lastRow = targetSheet.getLastRow() + 1;
let targetRange = targetSheet.getRange(lastRow,1,rowCount,columnCount);
targetRange.setValues(sourceValues);
}
Y este es el código que vi aquí y que funciona perfectamente en mi hoja de cálculo, donde este actualiza la columna B si hay cambios basados en el identificador único (columna A).
function updateEntrees() {
var ss=SpreadsheetApp.getActive();
var sh1=ss.getSheetByName('Support Sheet');
var rg1a=sh1.getRange(2,1,sh1.getLastRow()-1,1);
var vA1a=rg1a.getValues();
var rg1b=sh1.getRange(2,2,sh1.getLastRow()-1,1);
var vA1b=rg1b.getValues();
var sh2=ss.getSheetByName('Target Sheet');
var rg2a=sh2.getRange(2,1,sh2.getLastRow()-1,1);
var vA2a=rg2a.getValues();
var rg2b=sh2.getRange(2,2,sh2.getLastRow()-1,1);
var vA2b=rg2b.getValues();
for(var i=0;i<va1a.length;i++) {="" for(var="" j=""></va1a.length;i++)><va2a.length;j++) {
if(va1a[i][0]==va2a[j][0]) {
va2b[j][0]=va1b[i][0]
}
}
}
rg2b.setvalues(va2b);
}
ahora me pregunto cómo voy a combinar estos dos, donde si la hoja de origen tiene un identificador único que necesita actualización, actualizará la hoja de destino y si hay un nuevo identificador único, simplemente agregará los datos al final. {=”” if(va1a[i][0]=”=vA2a[j][0])” {=”” va2b[j][0]=”vA1b[i][0]” }=”” }=”” }=”” rg2b.setvalues(va2b);=”” }=”” ="" ahora="" me="" pregunto="" cómo="" voy="" a="" combinar="" estos="" dos,="" donde="" si="" la="" hoja="" de="" origen="" tiene="" un="" identificador="" único="" que="" necesita="" actualización,="" actualizará="" la="" hoja="" de="" destino="" y="" si="" hay="" un="" nuevo="" identificador="" único,="" simplemente="" agregará="" los="" datos="" al=""></va2a.length;j++) {
if(va1a[i][0]==va2a[j][0]) {
va2b[j][0]=va1b[i][0]
}
}
}
rg2b.setvalues(va2b);
}
ahora me pregunto cómo voy a combinar estos dos, donde si la hoja de origen tiene un identificador único que necesita actualización, actualizará la hoja de destino y si hay un nuevo identificador único, simplemente agregará los datos al final.>
davy.ai
¿Alguien puede ayudarme con esto?
Sí, es posible combinar los dos códigos que proporcionaste. El siguiente código debería hacer el trabajo: