Esta función funciona bien, pero hasta 20k filas. ¿Qué podría cambiar para que funcione rápido?
const SOURCE_FILE_ID = 'ID'; function getData() { const sourceSheet = SpreadsheetApp.openById(SOURCE_FILE_ID); const sourceRng = sourceSheet.getSheetByName('ativcopiar').getRange(1, 1, sourceSheet.getLastRow(), 9); const sourceValues = sourceRng.getValues(); var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName('Ativ.'); var destinationRng = sheet.getRange(1, 1, sheet.getLastRow(), 9); destinationRng.clearContent(); destinationRng.setValues(sourceValues); }A veces, se excede el límite de tiempo.
¡Aprecia cualquier luz! Gracias.
Creo que su objetivo es el siguiente.
En este caso, ¿qué tal si usamos Sheets API? Cuando se usa Sheets API, el costo del proceso se puede reducir un poco. Ref Cuando se usa Sheets API para su secuencia de comandos, se convierte en lo siguiente.
Antes de usar este script, habilite Sheets API en los servicios avanzados de Google .
function myFunction() { const SOURCE_FILE_ID = '###'; const sheet = SpreadsheetApp.openById(SOURCE_FILE_ID).getSheetByName('ativcopiar'); const dstSS = SpreadsheetApp.getActiveSpreadsheet(); var dstSheet = dstSS.getSheetByName('Ativ.'); var destinationRng = dstSheet.getRange(1, 1, dstSheet.getLastRow(), 9); destinationRng.clearContent(); SpreadsheetApp.flush(); const values = Sheets.Spreadsheets.Values.get(dstSS.getId(), "'ativcopiar'!A1:I" + sheet.getLastRow()).values; Sheets.Spreadsheets.Values.update({values}, dstSS.getId(), "Ativ.", {valueInputOption: "USER_ENTERED"}); }