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

431
Visualizações
¿Hay alguna manera de actualizar varios rangos de hojas de Google no contiguos usando el script de aplicaciones al mismo tiempo? (usando SpreadsheetApp, no hojas api)

supongamos que tenemos una tabla de 4 x 4 a partir de A1, ahora normalmente, si quiero actualizar sus valores de una vez, lo haré

 sheet.getRange("A1:D4").setValues(values);

ahora, si los datos no son contiguos, entonces tengo 3 4 x 4 tablas separadas con otros datos entre ellas, pero las tengo nombradas como rangos, es decir (tabla1, tabla2, tabla3), ¿puedo hacer algo como:

 sheet.getNamedRanges([table1range, table2range, table3range]).setValues([table1data, table2data, table3data]);

en vez de:

 sheet.getRange(table1range).setValues(table1data); sheet.getRange(table2range).setValues(table2data); sheet.getRange(table3range).setValues(table3data);

¿Entonces ahora las 3 tablas se actualizarán en la misma operación en lugar de 3 operaciones diferentes para ahorrar tiempo de ejecución? gracias de antemano.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

De acuerdo con la propuesta de Tanaike, sugiero una ligera modificación.

 const ss = SpreadsheetApp.getActiveSpreadsheet() const sheet = ss.getActiveSheet() const ranges = [table1range2D, table2range2D, table3range2D]; const values = [data1values2D, data2values2D, data3values2D]; const data = ranges.map((e, i) => ({ range: `'${sheet.getName()}'!${e}`, values : values[i] })); Sheets.Spreadsheets.Values.batchUpdate({ data, valueInputOption: "USER_ENTERED" }, ss.getId());

por ejemplo

 function updateGoogleSheet() { const ss = SpreadsheetApp.getActiveSpreadsheet() const sheet = ss.getActiveSheet() const otherSheet = ss.getSheetByName('other') const table1range2D = 'A1:B2', table2range2D = 'C4:D5', table3range2D = 'E7:F8' const data1values2D = otherSheet.getRange('A1:B2').getValues(), data2values2D = otherSheet.getRange('C4:D5').getValues(), data3values2D = otherSheet.getRange('E7:F8').getValues() const ranges = [table1range2D, table2range2D, table3range2D]; const values = [data1values2D, data2values2D, data3values2D]; const data = ranges.map((e, i) => ({ range: `'${sheet.getName()}'!${e}`, values : values[i] })); Sheets.Spreadsheets.Values.batchUpdate({ data, valueInputOption: "USER_ENTERED" }, ss.getId()); }

donde en la hoja llamada 'otro' podemos encontrar en A1 =sequence(10,10,0,1)

ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza Relatório

0

Creo que su objetivo es el siguiente.

  • Desea lograr el script como sheet.getNamedRanges([table1range, table2range, table3range]).setValues([table1data, table2data, table3data]); con el fin de reducir el costo del proceso.
  • Es decir, desea colocar los valores para cada rango en la hoja de cálculo de Google utilizando Google Apps Script. Y el rango es

En este caso, creo que Sheets API se puede usar para lograr su objetivo de la siguiente manera. En este caso, este hilo podría ser útil. Ref. Cuando se usa Sheets API para su situación, el costo del proceso se puede reducir en lugar del método para colocar los valores en cada rango en el bucle mediante el servicio de hoja de cálculo (SpreadsheetApp). Árbitro

 const spreadsheetId = "###"; // Please set the Spreadsheet ID. const ranges = [table1range, table2range, table3range]; // Please set table1range, table2range, table3range as A1Notation. const values = [table1data, table2data, table3data]; // Please set table1data, table2data, table3data. const data = ranges.map((e, i) => ({range: e, values: [[values[i]]]})); Sheets.Spreadsheets.Values.batchUpdate({data, valueInputOption: "USER_ENTERED"}, spreadsheetId);

Pero, en este caso, pensé que podría ser un poco difícil crear el cuerpo de la solicitud. Así que creé una biblioteca de Google Apps Script como contenedor para usar la API de hojas. Cuando se utiliza esta biblioteca, el script de ejemplo es el siguiente.

1. Instalar biblioteca.

Puede ver el método para instalar la biblioteca aquí . Y, este script usa Sheets API. Por lo tanto , habilite Sheets API en los servicios avanzados de Google .

2. Guión de muestra:

 const ranges = [table1range, table2range, table3range]; // Please set table1range, table2range, table3range as A1Notation. const values = [table1data, table2data, table3data]; // Please set table1data, table2data, table3data. const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); RangeListApp.getSpreadsheet(spreadsheet).getRangeList(ranges).setValues(values);
  • Cuando vi su secuencia de comandos, pensé que esta secuencia de comandos de muestra podría ir en la misma dirección que esperaba.
  • Cuando se ejecuta este script, cada valor de values se coloca en cada rango de ranges mediante Sheets API.

Referencias:

  • Benchmark: lectura y escritura de hojas de cálculo usando Google Apps Script
  • Método: hojas de cálculo.valores.batchUpdate
  • RangeListApp
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