1
次のシナリオを実現します:ユーザーが数式を保持するセルを選択し、アドインの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);
});
}
})();
は...ありがとう、どのケースで我々はgetSelectedRange' 'ではなく' getSelectedDataAsync'と 'setSelectedDataAsync'を使用する必要がありますか? – SoftTimur
getSelectedRangeを使用する理由はいくつかあります。あなたの目的のために、setSelectedDataAsyncとgetSelectedDataAsyncは数式のみの値をサポートしていません。 getSelectedRangeを使用する別の一般的な理由は、単一の非同期呼び出しで複数の読み取り/書き込み操作を可能にするのに対し、getSelectedDataAsyncおよびsetSelectedDataAsyncは呼び出しごとに1つしか実行できません。 getSelectedRangeを回避する唯一の理由は、Excel 2013などのAPIがサポートされていない場所でアドインを使用する必要がある場合です。 –
提案を試したところ、 'return ctx.sync();'、それでも動作しました。だから本当に必要なのでしょうか? – SoftTimur