Googleスプレッドシート内の特定の列(A列)にある記事番号を基に記事番号が変わる行に下線を引くスクリプト

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メソッドを使って行全体に下線を引きます。

用途

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

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

コメント