Então, estou tentando importar e ler um json para uma planilha do Excel, usando um suplemento que estou desenvolvendo. Então, cheguei a um ponto em que estou obtendo ColumnA
e ColumnB
do meu novo worksheet
. Então eu estou tentando empurrar os campos json para o Range.values
matrizes das colunas. No entanto, depois de executar o programa, a planilha ainda está em branco. Aqui está o código:
function importJson(json, name){
Excel.run(function (context) {
...
var sheetRange = newWorksheet.getRange("A1:B1");
sheetRange.load("values");
var aColumn = sheetRange.getColumn(0);
var bColumn = sheetRange.getColumn(1);
aColumn.load("values");
bColumn.load("values");
return context.sync().then(function () {
printJson(json, aColumn, bColumn);
});
});
printJson(json, aColumn, bColumn)
{
if (json instanceof Object) {
aColumn.values.push(json.display);
if (json.default != null) {
bColumn.values.push(json.default);
}
}
if (json.fields != null) {
for (var i = 0; i < json.fields.length; i++) {
printSchema(json.fields[i], aColumn, bColumn);
}
}
}
Executando o depurador, vejo os valores do json
objeto sendo empurrado para as matrizes, mas corro, ainda não as vejo no worksheet
Obrigado por qualquer ajuda!
Respostas:
0 para resposta № 1Então, graças a um pequeno empurrão de @TimWilliams, percebi que eu não estava atualizando o fichas de trabalho valores dentro do meu printJson
método. Então, depois de enviar todos os valores desejados na coluna A e na coluna B, adicionei esta etapa na minha última return sync().then(function(){})
....
Excel.run(function (context) {
...
var sheetRange = newWorksheet.getRange("A1:B1");
sheetRange.load("values");
var aColumn = sheetRange.getColumn(0);
var bColumn = sheetRange.getColumn(1);
aColumn.load("values");
bColumn.load("values");
return context.sync().then(function () {
printJson(json, aColumn, bColumn);
****
for (var i = 1; i < aColumn.values.length + 2; i++)
{
var aColumnSheet = newWorksheet.getRange("A" + i);
aColumnSheet.values = aColumn.values[i];
}
for (var i = 1; i < bColumn.values.length + 2; i++) {
var bColumnSheet = newWorksheet.getRange("B" + i);
bColumnSheet.values = bColumn.values[i];
}
*****
});
});
Dá-me duas belas colunas de dados na coluna A e na coluna B. Mais uma vez, obrigado @TimWilliams!