Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

114
Vistas
Cambie todas las filas además de la primera fila y luego agregue una nueva fila Google hoja de cálculo api Nodejs

Estoy usando la API de hojas de cálculo de Google con nodejs para insertar una fila en la segunda fila de uno de los archivos. Entonces, mi idea era crear una fila vacía en la fila 2 y luego agregar nuevos valores de fila.

El problema es que quiero cambiar todas las filas además de la primera y agregar una nueva fila vacía en la segunda fila manteniendo todos los datos y luego agregando los nuevos datos obtenidos a la nueva fila vacía creada.

Cuando ejecuto ambas solicitudes de la siguiente manera:

 let range = "MySheetName!A2"; let rowArr = [ [1,2,3,4,5,6,7,8], ]; this.insertSecondRowBlank(); this.exeGoogleBatchUpdate() .then( this.updateRowsOnSpreadsheet(range, rowArr) );

la fila con valores se agrega en la parte superior de la fila 2, por lo que está eliminando los datos que existen allí, y luego está cambiando y agregando la fila en blanco, y lo que quiero es lo contrario. Quiero mantener los datos en la fila 2 y simplemente cambiar todas las filas además de la fila 1 y luego agregar la nueva fila en una fila en blanco que se acaba de crear.

Las funciones utilizadas aquí:

 async updateRowsOnSpreadsheet(range, rowArr){ const googleSpreadSheet = await this.getSheetInstance(); const spreadSheetValues = googleSpreadSheet.spreadsheets.values; const updateRows = spreadSheetValues.update({ auth: await this.getAuth(), spreadsheetId:this.fileID, range: range, valueInputOption: "RAW", resource:{ values: rowArr, } }); } async insertSecondRowBlank(sheetID = "0"){ let singleRequest = { insertDimension : { range : { sheetId : sheetID, dimension : "ROWS", startIndex : 1, endIndex : 2, }, inheritFromBefore : false, } }; this.requests.push(singleRequest); } async exeGoogleBatchUpdate(){ let requests = this.requests; const batchUpdateRequest = {requests:requests}; const sheets = await this.getSheetInstance(); sheets.spreadsheets.batchUpdate({ spreadsheetId:this.fileID, resource: batchUpdateRequest, },(err, response) => { if (err) { } else { } }); }

¿Qué debo hacer para que Google acepte primero la primera solicitud y luego acepte la segunda solicitud en orden? Porque cuando envío, ejecuta primero updateRowsOnSpreadsheet y luego ejecuta insertSecondRowBlank incluso si el pedido que envío es el opuesto.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Creo que los métodos de googleapis para Node.js devuelven Promise. En su situación, ¿qué tal la siguiente modificación?

Guión modificado:

 async updateRowsOnSpreadsheet(range, rowArr) { const googleSpreadSheet = await this.getSheetInstance(); const spreadSheetValues = googleSpreadSheet.spreadsheets.values; const updateRows = await spreadSheetValues.update({ auth: await this.getAuth(), spreadsheetId: this.fileID, range: range, valueInputOption: "RAW", resource: { values: rowArr, }, }); return updateRows; } insertSecondRowBlank(sheetID = "0") { let singleRequest = { insertDimension: { range: { sheetId: sheetID, dimension: "ROWS", startIndex: 1, endIndex: 2, }, inheritFromBefore: false, }, }; this.requests.push(singleRequest); } async exeGoogleBatchUpdate() { let requests = this.requests; const batchUpdateRequest = { requests: requests }; const sheets = await this.getSheetInstance(); const res = await sheets.spreadsheets.batchUpdate({ spreadsheetId: this.fileID, resource: batchUpdateRequest, }); return res; }

En la secuencia de comandos modificada anterior, modifique la secuencia de comandos para ejecutar estas funciones de la siguiente manera.

 // Please modify the function name from `run` to your actual function name. async run() { // Please declare "sheetName". let range = sheetName + "!A2"; let rowArr = [[1, 2, 3, 4, 5, 6, 7, 8]]; this.insertSecondRowBlank(); const res1 = await this.exeGoogleBatchUpdate(); const res2 = await this.updateRowsOnSpreadsheet(range, rowArr); console.log(res1.data); console.log(res2.data); }
  • Cuando probé esto, confirmé que después de insertar una nueva fila en la segunda fila, el valor de rowArr se colocó en la nueva fila insertada.
  • Pensé que desde exeGoogleBatchUpdate() , pensé que en su secuencia de comandos, auth: await this.getAuth() en updateRowsOnSpreadsheet podría no ser necesario para su uso.

Referencia:

  • Cliente Node.js de las API de Google
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda