メインコンテンツまでスキップ

反復処理(ループ処理)

ここではオフィススクリプトを使って、ループ処理を実装する方法をサンプルコードと併せて解説します。

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