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

251
Visualizações
Necesita una secuencia de comandos para recorrer la lista de cotizaciones bursátiles, copiar la salida resultante y pegar la salida de varias filas en una hoja separada dentro del libro de trabajo

Mi pregunta es similar a Necesito una secuencia de comandos para recorrer la lista de cotizaciones de acciones, copiar la salida resultante y pegar la salida en una hoja separada dentro del libro de trabajo. Sin embargo, en lugar de copiar y pegar una sola fila (para cada indicador) debajo de la última fila no vacía, necesito copiar y pegar 100 filas (para cada indicador) debajo de la última fila no vacía.

Tengo tres hojas llamadas Tickers , Data y Results dentro de un solo libro de trabajo.

Si se hace manualmente, el trabajo sería el siguiente: Ingrese un símbolo de cotización en la celda A2 en la Hoja de Data . Luego, la hoja recupera los datos históricos de la serie temporal de Google Finance, ejecuta fórmulas y devuelve 100 filas y 7 columnas de datos (Ticker, Date, Open, High, Low, Close, Volume) en el rango A5:G254 dentro de la misma hoja de Data . Copie las 100 filas de datos devueltos y pegue los datos en la hoja de resultados debajo de la última fila no vacía. Luego repita el proceso con cada ticker.

Solicitud: cree una secuencia de comandos para recorrer una lista de 50 símbolos bursátiles de la hoja de Ticker (rango B2: B51), pegue 1 símbolo a la vez en la celda A2 de la hoja de Data , espere a que se ejecute la API de Google Finance y luego copie todas las filas resultantes generadas en el rango A5:G254, y pegando esos resultados en la hoja de Results , debajo de los datos generados desde el teletipo anterior, hasta que haya una tabla de "formato largo" de datos de series temporales de cada uno de los 50 teletipos.

El problema con mi secuencia de comandos actual es que pega solo la primera fila del rango deseado A5:G254.

 function getNewPrices() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const tickerSheet = ss.getSheetByName('Tickers'); const dataSheet = ss.getSheetByName('Data'); const resultsSheet = ss.getSheetByName('Results'); let data; let myListOfTickers = tickerSheet.getRange('B2:B51').getValues().filter(String).sort(); myListOfTickers.forEach(ticker => { dataSheet.getRange('A2').setValue(ticker[0]); data = dataSheet.getRange('A5:G254').getValues()[0]; pasteData(resultsSheet, data); }); }; function pasteData(resultsSheet,data){ let nextRow = resultsSheet.getLastRow() + 1; data.forEach((datum,index) => { resultsSheet.getRange(nextRow,index + 1,1,1).setValue(datum); }); };
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

No estoy completamente seguro, pero creo que esto es lo que quieres.

 function getNewPrices() { const ss = SpreadsheetApp.getActive(); const tsh = ss.getSheetByName('Tickers'); let tvs = tsh.getRange('B2:B51').getValues().filter(String).sort(); const dsh = ss.getSheetByName('Data'); const rsh = ss.getSheetByName('Results'); dsh.getRange(2,1,tvs.length,tvs[0].length).setValues(tvs); let dvs = dsh.getRange('A5:G254').getValues(); rsh.getRange(rsh.getLastRow() + 1, 1, dvs.length, dvs[0].length).setValues(dvs); }

Puede ir a Google Apps Script Reference y usar el cuadro de búsqueda para encontrar cualquier función que no entienda. Si es una función de JavaScript puro, vaya aquí

about 4 years ago · Juan Pablo Isaza Relatório

0

Problema resuelto. Aquí está el código final si alguien quiere usarlo más adelante. Gracias por el código inicial Cooper.

 function getNewPrices() { const ss = SpreadsheetApp.getActive(); const tsh = ss.getSheetByName('Tickers'); let tvs = tsh.getRange('B2:B51').getValues().filter(String).sort(); const dsh = ss.getSheetByName('Data'); const rsh = ss.getSheetByName('Results'); tvs.forEach(ticker =>{ dsh.getRange('A2').setValue(ticker[0]); let dvs = dsh.getRange('A5:G254').getValues(); rsh.getRange(rsh.getLastRow() + 1, 1, dvs.length, dvs[0].length).setValues(dvs); }); }
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