GASで簡単!スプレッドシートのセルを並び替える方法

スプレッドシートでセルを並び替えたいんだけど、どうしたらいいんだろう…。GASで何とかできるかな?
猫男
猫男
catman
catman
お任せさ、GASを使ってセルの並び替えをかっこよくやってやろう!

GASでスプレッドシートのセルを並び替える準備

GASでスプレッドシートのセルを並び替えるためには、まずスプレッドシートのデータを取得しよう。

スプレッドシートを取得する

GASを使ってスプレッドシートを操作する第一歩は、スプレッドシートを取得することだ。

const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const sheet = spreadsheet.getActiveSheet();

SpreadsheetApp.getActiveSpreadsheet()で現在開いているスプレッドシートを取得する。

getActiveSheet()はスプレッドシートの中で、現在選択されているシートを取得するメソッドだ。

範囲を決めてデータを取得する

セルを並び替えるには、並び替えたい範囲のデータを取得しよう。

const range = sheet.getRange("A1:C10");
const values = range.getValues();

getRange(“A1:C10”)は特定の範囲A1からC10を取得する。

getValues()を使って、その範囲内のデータを配列として取得する。

GASを用いてセルを並び替える

それでは、取得したデータを並び替えよう。

並び替え用のスクリプトを書く

JavaScriptのsortメソッドを活用して、セルを並び替えるスクリプトを作成しよう。

values.sort(function(a, b) {
  return a[0] > b[0] ? 1 : -1;
});
range.setValues(values);

values.sort()はカスタムな比較関数を使用して、最初の列を基準に並び替える。

並び替え後のデータをsetValues(values)でシートに反映させる。

 

練習問題

以下のスプレッドシートで、列Bを基準に並び替えを行うGASスクリプトを書いてみよう。セルの範囲はA1からC10とする。

 

解答・解説

const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const sheet = spreadsheet.getActiveSheet();
const range = sheet.getRange("A1:C10");
const values = range.getValues();

values.sort(function(a, b) {
  return a[1] > b[1] ? 1 : -1; // 列Bを基準に並び替え
});

range.setValues(values);

このスクリプトは、列B(配列のインデックス1)を基準にデータを並び替える。

values.sort()で並び替え条件を指定し、列Bの値を昇順に並び替えている。

並び替えた結果をrange.setValues(values)でスプレッドシートに反映させるんだ。

なるほど!これでセルを簡単に並び替えられるんだね。初心者でもやれそう!
猫男
猫男
catman
catman
その調子だ。GASを使いこなして、スプレッドシートの達人を目指そう!