【GAS】スプレッドシート内の特定列の記事番号ごとに自動で罫線を引く

Googleスプレッドシート内の特定の列(A列)にある記事番号を基に、記事番号が変わる行に下線を引くスクリプトです。以下に、コードの詳細な説明を示します。



function underlineRowsForArticleNumbers() {
  // アクティブなスプレッドシートを取得
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  
  // A列のデータ範囲を取得(A1から最終行まで)
  var range = sheet.getRange("A1:A" + sheet.getLastRow());
  var values = range.getValues();
  
  // 記事Noごとに行全体に下線を引く
  for (var i = 0; i < values.length - 1; i++) {
    var currentArticleNo = values[i][0];
    var nextArticleNo = values[i + 1][0];
    if (currentArticleNo && nextArticleNo && currentArticleNo !== nextArticleNo) { // 記事Noが変わる場合
      var rowRange = sheet.getRange(i + 1, 1, 1, sheet.getLastColumn()); // i + 1は1インデックスベースのため
      rowRange.setBorder(null, null, true, null, null, null, "black", SpreadsheetApp.BorderStyle.SOLID);
    }
  }
  
  // 最後の行には必ず下線を引く
  var lastRowRange = sheet.getRange(sheet.getLastRow(), 1, 1, sheet.getLastColumn());
  lastRowRange.setBorder(null, null, true, null, null, null, "black", SpreadsheetApp.BorderStyle.SOLID);
}

処理の流れ

  1. アクティブなスプレッドシートを取得
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    • 現在アクティブなスプレッドシートを取得し、その中のアクティブなシートを取得します。
  2. A列のデータ範囲を取得
    var range = sheet.getRange("A1:A" + sheet.getLastRow());
    var values = range.getValues();
    • A1から最終行までの範囲を取得し、その範囲の全ての値を二次元配列として取得します。
  3. 記事Noごとに行全体に下線を引く
    for (var i = 0; i < values.length - 1; i++) {
    var currentArticleNo = values[i][0];
    var nextArticleNo = values[i + 1][0];
    if (currentArticleNo && nextArticleNo && currentArticleNo !== nextArticleNo) {
    var rowRange = sheet.getRange(i + 1, 1, 1, sheet.getLastColumn());
    rowRange.setBorder(null, null, true, null, null, null, "black", SpreadsheetApp.BorderStyle.SOLID);
    }
    }
    • A列の各行を順番にチェックします。
    • 現在の行の値(記事No)と次の行の値を比較し、記事Noが変わる場合に下線を引きます。
    • 下線はsetBorderメソッドを使って設定し、行全体に対して下線を引きます。
  4. 最後の行に下線を引く
    var lastRowRange = sheet.getRange(sheet.getLastRow(), 1, 1, sheet.getLastColumn());
    lastRowRange.setBorder(null, null, true, null, null, null, "black", SpreadsheetApp.BorderStyle.SOLID);
    • 最後の行には必ず下線を引きます。これもsetBorderメソッドを使って行全体に下線を引きます。

用途

このスクリプトは、スプレッドシート内で記事番号(例えば注文番号やタスク番号など)が変わる行に視覚的な区切りを作りたい場合に便利です。

例えば、記事番号が変わるたびに視覚的な区切りを入れることで、データの識別が容易になります。

コメント