ループ(繰り返し)の構文
Google Apps ScriptのSpreadsheetAppサービスを使用して、アクティブなスプレッドシートを取得します。
for ループ/コード例①
現在アクティブになっているスプレッドシートのすべての行について、1列目に1から始まる連番を挿入するスクリプトです。
function loop1() {
var sheet = SpreadsheetApp.getActiveSheet();
var lastRow = sheet.getLastRow();
for (var i = 1; i <= lastRow; i++) {
sheet.getRange(i, 1).setValue(i);
}
SpreadsheetApp.getUi().alert('完了');
}
- Google Apps ScriptのSpreadsheetAppサービスを使用して、アクティブなスプレッドシートを取得します。
- そして、getLastRow()関数を使用して、スプレッドシートの最終行を取得します。
lastRow
には、現在アクティブになっているシートの最終行が代入されます。 - 次に、forループを使用して、1から最終行までの連続した数字を1列目に表示します。
for
文は、指定した回数だけ処理を繰り返すループ文です。このスクリプトでは、1から最終行まで、1つずつ変数i
を増やしながら繰り返し処理を行います。 getRange(row, column)
は、指定した行と列の範囲を指定するメソッドです。
このスクリプトでは、i
行目の1列目にアクセスするために、getRange(i, 1)
を使用しています。- setValue()関数を使用して、各セルに値を設定します。このスクリプトでは、
i
の値を1列目のセルにセットしています。
while ループ/コード例②
function loop2() {
var sheet = SpreadsheetApp.getActiveSheet();
var i = 1;
while (sheet.getRange(i, 1).getValue() != "") {
sheet.getRange(i, 1).setValue(sheet.getRange(i, 1).getValue() + 1);
i++;
}
SpreadsheetApp.getUi().alert('完了');
}
Google Apps ScriptのSpreadsheetAppサービスを使用して、アクティブなスプレッドシートを取得します。
最初にアクティブなシートを取得し、iを1で初期化します。次に、whileループが使用されます。ループの条件は、i行目の1列目のセルが空白でない限り、ループが続くことです。つまり、最初の空白行が見つかるまで、ループは繰り返されます。
ループの中で、i行目の1列目のセルの値に1を加算し、同じセルに更新された値を設定します。そして、iをインクリメントし、次の行に進みます。
最後に、完了メッセージを表示するアラートダイアログが表示されます。
エラーハンドリングコードが含まれているため、何らかのエラーが発生した場合でも、最後に「完了」というメッセージが表示されます。SpreadsheetApp.getUi().alert()関数を使用して、ダイアログメッセージを表示します。
*このスクリプトは、ループを使用して行を処理するため、処理対象の行数が多い場合には、処理に時間がかかる可能性があることに注意してください。また、シートに大量のデータが含まれる場合には、whileループの代わりにforループを使用することで、パフォーマンスを向上させることができます。
do-while ループ/コード例③
function loop3() {
var sheet = SpreadsheetApp.getActiveSheet();
var i = 1;
do {
sheet.getRange(i, 1).setValue(sheet.getRange(i, 1).getValue() + 1);
i++;
} while (sheet.getRange(i, 1).getValue() != "");
SpreadsheetApp.getUi().alert('完了');
}
このコードでは、Google Apps ScriptのSpreadsheetAppサービスを使用して、アクティブなスプレッドシートを取得します。
次に、do-whileループを使用して、1列目のセルに値が入っている場合に処理を繰り返します。
i
行目のA
列の値に1
を足した値を、i
行目のA
列に書き込む。i
の値を1
増やす。
do
ループの終了条件は、i
行目の A
列の値が空欄であることです。したがって、while
文で i
行目の A
列の値が空欄でない限り、ループを繰り返します。
エラーハンドリングコードが含まれているため、何らかのエラーが発生した場合でも、最後に「完了」というメッセージが表示されます。SpreadsheetApp.getUi().alert()関数を使用して、ダイアログメッセージを表示します。
コード例⓸
このGASコードは、スプレッドシートの指定された範囲に対してループ処理を行い、各セルに1を加算する処理を行います。
function 指定範囲をループ処理() {
var s_row = 2;
var s_col = 1;
var sheet = SpreadsheetApp.getActiveSheet();
var max_row = sheet.getRange(s_row, s_col).getDataRegion().getLastRow();
var max_col = sheet.getRange(s_row, s_col).getDataRegion().getLastColumn();
var my_array = sheet.getRange(s_row, s_col, max_row - s_row + 1, max_col - s_col + 1).getValues();
try {
for (var i = 0; i < my_array.length; i++) {
for (var j = 0; j < my_array[0].length; j++) {
my_array[i][j] += 1;
}
}
sheet.getRange(s_row, s_col, my_array.length, my_array[0].length).setValues(my_array);
SpreadsheetApp.getUi().alert("完了");
}
catch(e) {
SpreadsheetApp.getUi().alert("エラーが発生しました: " + e.message);
}
}
- まず、処理する範囲を決めるために、s_rowとs_colにそれぞれ2と1が代入されます。これは、処理を行う範囲の左上のセルがB2であることを意味します。
- 次に、getActiveSheet()メソッドを使用して、アクティブなシートのオブジェクトを取得
- getDataRegion()メソッドを使用して、指定された範囲のデータ領域を取得します。
- このコードでは、getActiveSpreadsheetメソッドで現在のアクティブなスプレッドシートを取得し、getRangeメソッドで指定された範囲を取得しています。
- 変数s_row, s_colには開始行、開始列の値が代入されます。
データ領域は、セルの値が存在する範囲のことであり、この場合は、B2セルから最後の行と列までの範囲が取得されます。
getLastRow()とgetLastColumn()メソッドは、それぞれ、データ領域の最後の行と列の番号を取得します。 - 変数max_row, max_colには範囲内の最終行、最終列の値が代入されます。
- getValues()メソッドを使用して、データ領域内のすべてのセルの値を二次元配列として取得します。これにより、すべてのセルの値を一度に処理することができます。
- 2重のforループを使用して、my_array配列内のすべての要素に1を加算します。最後に、setValues()メソッドを使用して、処理された値を元のセルに設定します。
- setValuesメソッドを使用して、二次元配列の値を範囲に設定します。
- try-catch構文を使用して、処理中にエラーが発生した場合に備えて、エラーメッセージを表示することができます。エラーが発生しなかった場合、完了メッセージを表示するように設定されています。
- 完了時には、メッセージボックスを表示して処理の完了を通知します。
コメント