/ / Enviar valores para getColumn.values ​​para Excel add In - javascript, json, excel

Empurrando valores para getColumn.values ​​para o Excel, adicione In - javascript, json, excel

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 № 1

Entã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!