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

588
Visualizações
Eliminar columnas específicas en Google App Script FAST

a continuación se muestra el código para eliminar columnas completas, excepto las columnas "G" y "M", utilizando un bucle for, pero el proceso es demasiado lento, ¿hay alguna manera de hacerlo más rápido?

 var lastCol = newSheet.getLastColumn(); var keep = [7,13]; for (var col=lastCol; col > 0; col--) { if (keep.indexOf(col) == -1) { newSheet.deleteColumn(col); } }
about 4 years ago · Santiago Gelvez
2 Respostas
Responde à pergunta

0

He aquí cómo hacerlo con la API de SpreadsheetApp:

 function test() { const keep = [7, 13]; // columns G and M const newSheet = SpreadsheetApp.getActiveSheet(); deleteColumns_(newSheet, keep); } /** * Deletes all columns in sheet except the ones whose column numbers * are listed in columnsToKeep. * * The columnsToKeep array [1, 2, 7, 13] means that columns A, B, G and M * will remain while other columns are deleted. * * @param {Sheet} sheet The sheet where to delete columns. * @param {Number[]} columnsToKeep Array of column numbers to keep. */ function deleteColumns_(sheet, columnsToKeep) { // version 1.0, written by --Hyde, 13 June 2022 // - see https://stackoverflow.com/q/72600890/13045193 const columnsToDelete = []; for (let i = 1, maxColumns = sheet.getMaxColumns(); i <= maxColumns; i++) { if (!columnsToKeep.some(columnNumber => i === columnNumber)) { columnsToDelete.push(i); } } const tuples = getRunLengths_(columnsToDelete).reverse(); tuples.forEach(([columnStart, numColumns]) => sheet.deleteColumns(columnStart, numColumns)); } /** * Counts consecutive numbers in an array and returns a 2D array that * lists the first number of each run and the number of items in each run. * * The numbers array [1, 2, 3, 5, 8, 9, 11, 12, 13, 5, 4] will get * the result [[1, 3], [5, 1], [8, 2], [11, 3], [5, 1], [4, 1]]. * * For best results, sort the numbers array like this: * const runLengths = getRunLengths_(numbers.sort((a, b) => a - b)); * Note that duplicate values in numbers will give duplicates in result. * * @param {Number[]} numbers The numbers to group into runs. * @return {Number[][]} The numbers grouped into runs, or [] if the array is empty. */ function getRunLengths_(numbers) { // version 1.1, written by --Hyde, 31 May 2021 if (!numbers.length) { return []; } return numbers.reduce((accumulator, value, index) => { if (!index || value !== 1 + numbers[index - 1]) { accumulator.push([value]); } const lastIndex = accumulator.length - 1; accumulator[lastIndex][1] = (accumulator[lastIndex][1] || 0) + 1; return accumulator; }, []); }
about 4 years ago · Santiago Gelvez Relatório

0

Creo que su objetivo es el siguiente.

  • Desea reducir el costo del proceso de su script.
  • Desea eliminar todas las columnas excepto las columnas "G" y "M".

En este caso, ¿qué tal si usamos Sheets API? Cuando se usa Sheets API, su secuencia de comandos es la siguiente. Pensé que cuando se usa Sheets API, el costo del proceso podría reducirse un poco.

Guión modificado:

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

 function myFunction() { var sheetName = "Sheet1"; // Please set the sheet name. var keep = [7, 13]; var ss = SpreadsheetApp.getActiveSpreadsheet(); var newSheet = ss.getSheetByName(sheetName); var lastCol = newSheet.getLastColumn(); // or newSheet.getMaxColumns() var sheetId = newSheet.getSheetId(); var requests = [...Array(lastCol)].reduce((ar, _, i) => { if (!keep.includes(i + 1)) { ar.push({ deleteDimension: { range: { sheetId, startIndex: i, endIndex: i + 1, dimension: "COLUMNS" } } }); } return ar; }, []).reverse(); if (requests.length == 0) return; Sheets.Spreadsheets.batchUpdate({ requests }, ss.getId()); }
  • Cuando se ejecuta este script, se eliminan todas las columnas excepto las columnas "G" y "M".
  • Desde su secuencia de comandos, var lastCol = newSheet.getLastColumn(); se usa En este caso, se utiliza el rango de datos. Si desea verificar todas las columnas, use var lastCol = newSheet.getMaxColumns(); en lugar de eso.

Referencias:

  • Método: hojas de cálculo.batchUpdate
  • DeleteDimensionRequest
about 4 years ago · Santiago Gelvez 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