Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

139
Visualizações
App Scripts Loop Copy basado en Condition Optimization

Escribí un script de aplicación que copia valores de la hoja 2 a la hoja 1 solo si la celda de la columna A (en la hoja 1) contiene el valor "Copiar". Este script funciona bien, pero todo lo que tenga más de 50 filas se ejecuta bastante lento, ¿hay alguna forma de optimizar esta función para que se ejecute más rápido?

 function CopyValues() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var Sheet1 = ss.getSheetByName('Sheet1'); var Sheet2 = ss.getSheetByName('Sheet2'); //If Column A = Copy then copy the values in Sheet 2 column B to W to sheet 1 for (var i=1; i<=1000; i = i + 1) if (Sheet1.getRange(i,1,100,1).getValue() == 'Copy'){ Sheet2.getRange(i,2,1,23).copyTo(Sheet1.getRange(i,2,1,23),SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false); }; };
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Creo que su objetivo es el siguiente.

  • Su guión funciona bien. Y desea reducir el costo del proceso de su script.

En esta modificación, me gustaría reducir el costo del proceso del script por parte de Sheets API. Pensé que cuando se usa Sheets API para su situación, el costo del proceso podrá reducirse un poco.

Cuando Sheets API se refleja en su secuencia de comandos, se convierte en lo siguiente.

Guión modificado:

Antes de usar este script, habilite Sheets API en los servicios avanzados de Google .

 function CopyValues2() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var Sheet1 = ss.getSheetByName('Sheet1'); var Sheet2 = ss.getSheetByName('Sheet2'); // Retrieve copied row index. var rows = Sheet1.getRange("A1:A" + Sheet1.getLastRow()).getValues().reduce((ar, [a], i) => { if (a == "Copy") ar.push(i); return ar; }, []); // Create a request body for using the batchUpdate method of Sheets API. var srcSheetId = Sheet2.getSheetId(); var dstSheetId = Sheet1.getSheetId(); var requests = rows.map(e => ({ copyPaste: { source: { sheetId: srcSheetId, startRowIndex: e, endRowIndex: e + 1, startColumnIndex: 1, endColumnIndex: 24 }, destination: { sheetId: dstSheetId, startRowIndex: e, endRowIndex: e + 1, startColumnIndex: 1 }, pasteType: "PASTE_NORMAL" } })); // Request Sheets API using the created request body. Sheets.Spreadsheets.batchUpdate({ requests }, ss.getId()); }
  • Cuando se ejecuta este script, pensé que se obtenía el mismo resultado de mostrar el script al reducir el costo del proceso.

Referencias:

  • Método: hojas de cálculo.batchUpdate
  • CopiarPegarSolicitud
about 4 years ago · Juan Pablo Isaza Relatório

0

Prueba esto:

 function CopyValues() { const ss = SpreadsheetApp.getActive(); const sh1 = ss.getSheetByName('Sheet1'); const sh2 = ss.getSheetByName('Sheet2'); const vs = sh1.getRange(1,1,sh1.getLastRow(),23).getValues().filter(r => r[0] == "Copy"); sh2.getRange(sh2.getLastRow() + 1, 1,vs.length,23).setValues(vs) }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda