GASで簡単に罫線を操作!作成から削除、条件付き書式まで解説

GASでスプレッドシートの罫線を操作するにはどうしたらいいんだろう?取得や削除なんてできるのかな…条件付き書式と組み合わせられるともっと便利なのに。
猫男
猫男
catman
catman
その疑問にcatmanが答えよう。

GASでスプレッドシートの罫線を作成する

まずはGASでスプレッドシートの罫線を作成する方法について解説しよう。


function setBorders() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const range = sheet.getRange('A1:C3');

  // 上・下・左・右・縦・横すべてのボーダーを設定
  range.setBorder(true, true, true, true, true, true);
}

この関数を実行すると、こうなる。

gas 罫線

setBorder() は、Google Apps Script(GAS)で スプレッドシートのセルや範囲にボーダー(罫線)を設定するメソッド 。

基本構文は次のとおりだ。

range.setBorder(top, left, bottom, right, vertical, horizontal, color, style)
引数 説明
top Boolean 上の線を引くか(true/false
left Boolean 左の線を引くか
bottom Boolean 下の線を引くか
right Boolean 右の線を引くか
vertical Boolean 縦の内部線を引くか(列の間)
horizontal Boolean 横の内部線を引くか(行の間)
color String 線の色(例:"#000000")※省略可
style Enum 線のスタイル(SpreadsheetApp.BorderStyle

引数は最大8個、すべて省略可能なんだ。

今回はtop〜horizontalをtrueにしているから、上・下・左・右・縦・横すべての罫線を設定していることになる。

GASで罫線を削除する方法

次にGASを使って罫線を削除する方法を説明しよう。

やり方は簡単で、さっきtrueにしたところをfalseにしてやればいいんだ。


function clearBorders() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const range = sheet.getRange('A1:C3');
  range.setBorder(false, false, false, false, false, false);
}

このスクリプトを使えば、指定したセル範囲の罫線を簡単に削除できる。

gas 罫線

強力な機能で、見た目をすっきりとさせられる。

こういう操作もスクリプトで簡単にできるのはありがたいなぁ。罫線の状態をすぐに変えられるから便利だね。
猫男
猫男

GASで条件付き書式で罫線を操作できる??

GASでは、setBorder() を使って手動で罫線を設定できる。

がしかし、条件付き書式で罫線(ボーダー)を設定できない。以下のようなコードはエラーになるぞ。


// このコードはエラーになります(setBorders は使えません)
SpreadsheetApp.newConditionalFormatRule()
  .whenNumberGreaterThan(5)
  .setBorders(true, true, true, true, null, null, SpreadsheetApp.BorderStyle.SOLID); // ❌

代わりに、背景色や文字色などを使って条件付き装飾しよう。


function highlightGreaterThanFive() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const range = sheet.getRange('A1:A10');
  const rule = SpreadsheetApp.newConditionalFormatRule()
    .whenNumberGreaterThan(5)
    .setBackground("#ffe599") // 薄い黄色で強調
    .setRanges([range])
    .build();
  const rules = sheet.getConditionalFormatRules();
  rules.push(rule);
  sheet.setConditionalFormatRules(rules);
}

このスクリプトは、A1~10のセルの値が5より大きいときにそのセルの背景色を変更するぞ。

処理 内容
getRange('A1:A10') A1 から A10 のセル範囲を対象に指定
whenNumberGreaterThan(5) セルの値が 5 より大きいときに適用
setBackground("#ffe599") 背景色を薄い黄色に設定
setConditionalFormatRules(rules) 既存のルールに新しいルールを追加して反映

 

練習問題:GASで空のセルに罫線を付ける

次のセル範囲 'B2:D4' において、セルの内容が空である場合にだけ罫線を設定するスクリプトを書いてみてください。

解答・解説


function setBordersForEmptyCells() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const range = sheet.getRange("B2:D4");
  const numRows = range.getNumRows();
  const numCols = range.getNumColumns();
  const values = range.getValues();

  for (let i = 0; i < numRows; i++) {
    for (let j = 0; j < numCols; j++) {
      const cell = range.getCell(i + 1, j + 1);
      if (values[i][j] === "") {
        cell.setBorder(true, true, true, true); // 空セルに罫線を設定
      } else {
        cell.setBorder(false, false, false, false); // 罫線を消す
      }
    }
  }
}

getValues() を使ってセルの値を2次元配列で取得し、空文字("")であるかをチェックしています。空であれば setBorder() を使って上下左右に罫線を引き、空でない場合は罫線を外します。

この方法なら、条件に応じて動的に罫線を描くことが可能になります。