反復処理(ループ処理)
ここではオフィススクリプトを使って、ループ処理を実装する方法をサンプルコードと併せて解説します。
for 文
info
よくループ処理のサンプルとして紹介される、変数をカウントアップしながら配列の n 個目を取得するような記述方法は、Office スクリプトでは別の記述方法に代替できる場合が多いです。
そのため最も簡易的かつ可読性の高いfor...of
から解説します。
for-of 文を使ったループ処理
反復可能なオブジェクトの各要素について処理を実装する場合は、for...of
文を使用します。
配列内の各要素を変数として受け取ることができます。
for...ofを使ったサンプル
const fruits = ['リンゴ', 'ミカン', 'バナナ'];
// 各要素に対して反復処理
for (const one of fruits) {
console.log(one);
}
実行結果
リンゴ
ミカン
バナナ
for-in 文を使ったループ処理
次にfor...in
文を使ったループ処理です。
for...of
とは違い、要素ではなくインデックスを変数として受け取ります。
for...inを使ったサンプル
const sports = ['サッカー', '野球', 'バスケ'];
// インデックスを使って反復処理
for (const i in sports) {
console.log(sports[i]);
}
実行結果
サッカー
野球
バスケ
通常の for 文を使ったループ処理
最後に他言語でもよく利用される、通常のfor
文を使ったループ処理です。
forを使ったサンプル
const fruits = ['リンゴ', 'ミカン', 'バナナ'];
// 配列の長さを使って反復処理
for (let i = 0; i < fruits.length; i++) {
console.log(fruits[i]);
}
実行結果
リンゴ
ミカン
バナナ
continue と break
for
文の処理中に、強制的に次のループに移行したい場合は、continue
を使用します。
また、for
ループを中断する場合はbreak
を使用します。
continueとbreak
const sports = ['野球', 'サッカー', 'バスケ', '卓球', 'バレー'];
for (let i = 0; i < sports.length; i++) {
if (i < 2) {
console.log('スキップしました');
continue;
}
if (i > 3) {
break;
}
console.log(sports[i]);
}
実行結果
スキップしました
スキップしました
バスケ
卓球
forEach メソッド
Office スクリプトにおいて反復可能なオブジェクトは、forEach
メソッドを持ちます。
forEach
を使って、各要素に対して処理を実行することができます。
forEachを使ったサンプル
const fruits = ['リンゴ', 'ミカン', 'バナナ'];
// 各要素に対して反復処理
fruits.forEach((fruit, i) => {
console.log(`${i + 1}個目のフルーツは${fruit}です`);
});
実行結果
1個目のフルーツはリンゴです
2個目のフルーツはミカンです
3個目のフルーツはバナナです
コールバック関数の 2 番目の引数は省略可能です。
while 文
while
文を使ったループ処理の実装方法を解説します。
for
文は反復可能な変数に対して使用することが多いのに対し、while 文は特定の条件を満たすまでループ処理を行う場合に適しています。
whileを使ったサンプル
let count = 0;
while (count < 1000) {
count++;
}
console.log(count);
実行結果
1000