Намерение состоит в том, чтобы записать формулу (пользовательскую функцию) в ячейку, вычислить ее, загрузить значения и получить их в одной функции.
function myFunc() {
Excel.run(function (ctx) {
var fExcel = '=SUM(1,2)';
var fCustom = '=custFunc()';
var rng = ctx.workbook.worksheets.getActiveWorksheet().getRange('A1');
//rng.formulas = [[fExcel]]; // works OK
rng.formulas = [[fCustom]]; // values are #GETTING_DATA
// try different calc calls
rng.load("values");
return ctx.sync().then(function () {
console.log(rng.values);
});
});
}
Для встроенных функций Excel все работает должным образом, и console
записывает значение 3 после ctx.sync()
. С пользовательскими функциями (которые отправляют запрос на внешний сервер для вычисления результата) значения равны '#GETTING_DATA'
. Я пробовал все следующие вещи до rng.load("values");
, чтобы запустить вычисление, но пока ничего не помогло:
rng.calculate();
var s = ctx.workbook.worksheets.getActiveWorksheet(); s.calculate(true);
ctx.workbook.application.calculate('Full');
Есть ли способ запустить вычисление пользовательских функций и убедиться, что значения доступны после ctx.sync()
?