を検索する方法範囲のアドレスの配列を格納しており、現在選択されているセルも認識しています。私は、格納されたアドレスによって定義されたすべての範囲を反復処理し、選択されたセルがその中にあるかどうかを確認する必要があります(交差がある場合)。同期的な世界では簡単ですが、私は非同期のオフィスの世界でそれを行う方法を理解することができません。Excelで非同期で繰り返し検索する方法Excelアドインで
この投稿はBest way to write loops with promises (ctx.sync) in JavaScript API for Officeですが、Michal氏は非同期呼び出しを連鎖させるための素晴らしいパターンを示していますが、いくつか質問があります。
function loadAll() {
var ranges = ["A:A", "B:B", "C:C", "D:D", "E:E"];
var sheet = "Sheet1";
// Create a starter promise object
var promise = new OfficeExtension.Promise(function(resolve, reject) { resolve (null); });
for (var i = 0; i < ranges.length; i++) {
// Create a closure over i, since it's used inside a function that won't be immediately executed.
(function(i) {
// Chain the promise by appending to it:
promise = promise.then(function() {
return loadRange(ranges[i], sheet);
})
})(i);
}}
function loadRange (range, sheet) {
return Excel.run(function (ctx) {
var r = ctx.workbook.worksheets.getItem(sheet).getRange(range);
r.load('address');
return ctx.sync().then(function() {
console.log(r.address);
});
});
}
質問:
1)FOR-における自己実行インナー機能があるのはなぜちょうど私がそれをコピー&ペーストしたいここにコードを持っている
サイクル?
for (var i = 0; i < ranges.length; i++) {
// Chain the promise by appending to it:
promise = promise.then(function() {
return loadRange(ranges[i], sheet);
})
}}
2)交差点が見つかった場合は、チェーンを停止するように修正する必要があります。どうやってやるの?
3)Excelなどのオブジェクト(範囲など)を反復して何か(最初の空のセルなど)を検索する方法をお勧めしますか?
おかげ
フィリップ