例文を使って繰り返し業務を時短

【GAS】ループ(繰り返し)処理の構文一覧 

【GAS】ループ(繰り返し)処理の構文一覧  GAS

ループ(繰り返し)の構文

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);
  }
}
  1. まず、処理する範囲を決めるために、s_rowとs_colにそれぞれ2と1が代入されます。これは、処理を行う範囲の左上のセルがB2であることを意味します。
  2. 次に、getActiveSheet()メソッドを使用して、アクティブなシートのオブジェクトを取得
  3. getDataRegion()メソッドを使用して、指定された範囲のデータ領域を取得します。
  4. このコードでは、getActiveSpreadsheetメソッドで現在のアクティブなスプレッドシートを取得し、getRangeメソッドで指定された範囲を取得しています。
  5. 変数s_row, s_colには開始行、開始列の値が代入されます。
    データ領域は、セルの値が存在する範囲のことであり、この場合は、B2セルから最後の行と列までの範囲が取得されます。
    getLastRow()とgetLastColumn()メソッドは、それぞれ、データ領域の最後の行と列の番号を取得します。
  6. 変数max_row, max_colには範囲内の最終行、最終列の値が代入されます。
  7. getValues()メソッドを使用して、データ領域内のすべてのセルの値を二次元配列として取得します。これにより、すべてのセルの値を一度に処理することができます。
  8. 2重のforループを使用して、my_array配列内のすべての要素に1を加算します。最後に、setValues()メソッドを使用して、処理された値を元のセルに設定します。
  9. setValuesメソッドを使用して、二次元配列の値を範囲に設定します。
  10. try-catch構文を使用して、処理中にエラーが発生した場合に備えて、エラーメッセージを表示することができます。エラーが発生しなかった場合、完了メッセージを表示するように設定されています。
  11. 完了時には、メッセージボックスを表示して処理の完了を通知します。

コメント

タイトルとURLをコピーしました