GASで簡単!スプレッドシートのセルを並び替える方法
スプレッドシートでセルを並び替えたいんだけど、どうしたらいいんだろう…。GASで何とかできるかな?

猫男

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
その調子だ。GASを使いこなして、スプレッドシートの達人を目指そう!