Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

429
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!