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

371
Visualizações
Excepción: no tiene permiso para llamar a setValues

Tengo 2 pestañas en mi Hoja de Google:

dashboard :

ingrese la descripción de la imagen aquí

db :

ingrese la descripción de la imagen aquí

En el dashboard en la columna B llamo a la función yahoofinance() . Esta función verifica si para el ticker dado existen datos en db . Si es así, se devuelven estos datos. Si no, O si es así pero los datos están vacíos, Yahoo! Se contacta con Finanzas para recuperar los datos. Hasta aquí todo bien.

Tome JPM como ejemplo ahora. Se llama en la fila 3 en el dashboard . En db encontramos JPM pero no hay datos para el teletipo, por lo que lo recuperamos en vivo de Yahoo! Finanzas. Posteriormente, quiero actualizar la fila JPM en db con estos datos , para que la próxima vez que abramos el dashboard , no nos comuniquemos con Yahoo! de nuevo por esta información.

Sin embargo, vea la línea debajo de // update existing row ... el código genera un error Exception: You do not have permission to call setValues y no sé cómo resolverlo. ¿Tú? ¡Cualquier ayuda es muy apreciada!

 function yahoofinance(ticker) { // First check if we have this data stored already var db = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('db'); var tickers = db.getRange('A2:A').getValues(); var stored = false; var row = 2; for (var r = 0; r <= tickers.length; r++) { if (tickers[r] == ticker) { stored = true; row = row + r; } } if (stored == true) { // the ticker is known in db var range = db.getRange(row, 2, 1, 4); if (range.isBlank()) { // ticker is known but no data yet var data = get_live_data(ticker); // update existing row db.getRange(row, 2).setValues(data); // return data return data; } else { return range.getValues(); } } else { var data = get_live_data(ticker); // append row to db // return data to sheet return data; } } function get_live_data(ticker) { const url = 'https://query2.finance.yahoo.com/v10/finance/quoteSummary/' + encodeURI(ticker) + '?modules=price,assetProfile,summaryDetail'; let response = UrlFetchApp.fetch(url, { muteHttpExceptions: true }); if (response.getResponseCode() == 200) { var object = JSON.parse(response.getContentText()); } let fwdPE = object.quoteSummary.result[0]?.summaryDetail?.forwardPE?.fmt || '-'; let sector = object.quoteSummary.result[0]?.assetProfile?.sector || '-'; let mktCap = object.quoteSummary.result[0]?.price?.marketCap?.fmt || '-'; return [[fwdPE, sector, mktCap]]; }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Entonces, según la línea debajo de // update existing row , desea agregar los datos en la otra hoja y según la documentación , las funciones personalizadas devuelven valores pero solo establecerán valores en la celda actual donde está usando la función, puede ' t modifique los datos en otra celda y es por eso que está recibiendo el error. Está llamando a la función en B4 y está intentando establecer valores en otra hoja al mismo tiempo, lo que no está permitido.

Una función personalizada no puede afectar a celdas que no sean aquellas a las que devuelve un valor. En otras palabras, una función personalizada no puede editar celdas arbitrarias, solo las celdas desde las que se llama y sus celdas adyacentes.

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