我想要实现以下场景:用户选择一个包含公式的单元格,单击我的加载项的test
按钮,然后我的test
函数读取所选单元格的公式,将+RAND()
附加到它,然后将其写回工作簿。
以下代码很好地读取了所选单元格的公式,但它没有很好地回写。我不确定(第二个)return ctx.sync()
是否被正确使用。
此外,我不知道在整个场景中是否应该使用getSelectedDataAsync
和setSelectedDataAsync
(而不是getSelectedRange
)。
有人可以帮忙吗?
(function() {
"use strict";
Office.initialize = function(reason) {
$(document).ready(function() {
app.initialize();
$('#test').click(test);
});
}
;
function test() {
Excel.run(function(ctx) {
var selectedRange = ctx.workbook.getSelectedRange();
selectedRange.load(["formulas"]);
return ctx.sync().then(function() {
console.log(selectedRange.formulas[0][0]);
var x = selectedRange.formulas[0][0] + "+RAND()";
selectedRange.formulas[0][0] = x;
return ctx.sync();
})
}).then(function() {
console.log("done");
}).catch(function(error) {
console.log("Error: " + error);
});
}
})();
答案 0 :(得分:2)
错误在于您尝试分配给公式上下文对象中的单个元素。而是使用:
selectedRange.formulas = x;
或
selectedRange.formulas = [[x]];