Estou usando a função integrada do Google App Scripts, UrlFetchApp.fetch, para solicitar dados de uma URL. Quando você navega para essa URL no navegador, ele apenas inicia um download de arquivo de um arquivo XLSX. Se eu console.log a resposta, é apenas uma sequência de dados ilegíveis. Como posso analisar uma sequência de caracteres que representa o conteúdo deste arquivo XLSX em uma matriz JSON?
Não consigo salvar este arquivo no drive e lê-lo novamente, estou procurando uma maneira de analisar a sequência de resposta diretamente no App Script. O código a seguir usa a biblioteca xlsx.full.min.js. Recebo um erro "Erro durante a análise: Método de compactação ZIP não suportado NaN"
function parseExcelToJson() {
try {
// Step 1: Fetch the Excel file from the URL
const response = UrlFetchApp.fetch('https://www.nasdaqtrader.com/Content/ProductsServices/TRADING/TRF-Chicago-Test-Securities.xlsx');
// Step 2: Convert the response to a Blob (in memory)
const blob = response.getBlob();
// Step 3: Convert the Blob to a byte array (needed for xlsx.js)
const byteArray = blob.getBytes();
// Step 4: Use xlsx.js to parse the byte array
const data = XLSX.read(byteArray, { type: 'array' });
// Step 5: Access the first sheet
const sheet = data.Sheets[data.SheetNames[0]];
// Step 6: Convert the sheet to JSON format
const json = XLSX.utils.sheet_to_json(sheet);
// Step 7: Return the JSON result
return json;
} catch (e) {
// Log any errors during parsing
Logger.log("Error during parsing: " + e.message);
}
}
Então, o problema é que, embora o Google Apps Script seja um tempo de execução JS, ele não implementa todos os recursos do JavaScript:
Na verdade, ele implementa um subconjunto personalizado do padrão ECMAScript, e não é necessariamente compatível com os recursos mais recentes do mecanismo V8 (presente em navegadores e tempos de execução modernos como Node, Deno, Bun). Então você não pode presumir que bibliotecas modernas funcionarão : felizmente para bibliotecas antigas o suficiente, um pouco de tentativa e erro e você encontrará uma versão adequada para usar! Descobri que o XLSX 0.17.0 funciona dentro do GAS , então, você deve buscar e avaliar essa versão:
Então, o script a seguir funciona conforme o esperado
Saída:
Duas soluções
1.
mudou para
A resposta de HernanATN também resolveu meu problema e pareceu ser mais confiável usar uma versão diferente do xlsx que seja mais compatível com o GAS