Googleスプレッドシートを魔法のように操作!GASでデータを自動ソートする方法

GAS

Googleスプレッドシートを使って日々のデータを整理している方必見!この記事では、Google Apps Script(GAS)を活用して、特定の条件でデータを抽出し、自動で並べ替える方法をわかりやすく解説します。例えば「食費」のデータだけを支払額の昇順でソートし、新しいシートに結果を出力するスクリプトを実際に作成。初心者の方でも簡単に実践できる手順を紹介しています。作業効率を大幅にアップさせるGASの活用術をぜひお試しください!

サンプルデータ

今、このようなデータが入っているとします。

スクリプト

「拡張機能」から「Apps Script」を選択してください。

このスプレッドシートデータに基づいて、「食費」の支払額を少ない順に並び替えるGoogle Apps Scriptを作成する場合、以下のようなスクリプトを使用します。

function sortFoodExpensesToNewSheet() {
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const sourceSheet = spreadsheet.getSheetByName("費用"); // 元のデータが入っているシート
  if (!sourceSheet) {
    Logger.log("シート '費用' が見つかりません。");
    return;
  }

  const data = sourceSheet.getDataRange().getValues(); // 全データを取得
  const header = data[0]; // ヘッダー行(1行目)
  const rows = data.slice(1); // データ部分(2行目以降)

  // "食費"のデータを抽出
  const foodExpenses = rows.filter(row => row[2] === "食費"); // "項目"列が"食費"の行を抽出

  // 支払額(2列目)を基準に昇順ソート
  foodExpenses.sort((a, b) => a[1] - b[1]);

  // ヘッダーとソート済みデータを結合
  const sortedData = [header, ...foodExpenses];

  // 新しいシート "ソート結果" を取得または作成
  let resultSheet = spreadsheet.getSheetByName("ソート結果");
  if (!resultSheet) {
    resultSheet = spreadsheet.insertSheet("ソート結果");
  } else {
    resultSheet.clear(); // 既存のデータをクリア
  }

  // ソート結果を新しいシートに書き込む
  resultSheet.getRange(1, 1, sortedData.length,sortedData[0].length).setValues(sortedData);

  Logger.log("食費のソート結果を 'ソート結果' シートに出力しました。");
}

「実行」をクリックしてください。

実行ログは下記のようになります。

結果はこのようになります。

新しいシート名”ソート結果”に項目が”食費”となっているデータのみ支払額が少ない順に並べ替えられています。


スクリプトの説明

元データのシート名を指定

  const sourceSheet = spreadsheet.getSheetByName("費用"); // 元のデータが入っているシート
  if (!sourceSheet) {
    Logger.log("シート '費用' が見つかりません。");
    return;
  }

シート名「費用」を指定して元データのシートを取得します。
シートが存在しない場合のエラーチェックをしています。

スプレッドシートデータの取得

const data = sheet.getDataRange().getValues();
const header = data[0];
const rows = data.slice(1);

getDataRange().getValues()
 シート内の全データを2次元配列として取得。
data[0]
 ヘッダー行(最初の行)を取得。
data.slice(1)
 ヘッダー行を除いたデータ部分のみを取得

「食費」データの抽出

const foodExpenses = rows.filter(row => row[2] === "食費");

filter()
 配列から「項目」列(インデックス2)が「食費」である行だけを抽出。

支払額の昇順ソート

foodExpenses.sort((a, b) => a[1] - b[1]);

sort()
 配列を指定した条件で並べ替える。
比較関数:a[1] – b[1]
 支払額(2列目)を基準に昇順(小さい順)に並べ替える。

新しいシート「ソート結果」の作成

let resultSheet = spreadsheet.getSheetByName("ソート結果");
if (!resultSheet) {
  resultSheet = spreadsheet.insertSheet("ソート結果");
} else {
  resultSheet.clear(); // 既存データをクリア
}

シート「ソート結果」が存在する場合は既存データをクリアし、存在しない場合は新しく作成します。

データを新しいシートに書き込み

resultSheet.getRange(1, 1, sortedData.length, sortedData[0].length).setValues(sortedData);

ソート結果を「ソート結果」シートに書き込みます。

注意点

元データのシート名が「費用」であることを確認してください。

「ソート結果」シートが既に存在する場合、その内容は上書きされます。

スクリプト実行後、結果が期待通りであるか確認してください。

使用手順

スクリプトを追加

Googleスプレッドシートで「拡張機能」→「Apps Script」を選択。
エディタに上記スクリプトを貼り付けて保存。

スクリプトを実行

スクリプトエディタで関数 sortFoodExpensesToNewSheet を選択し、実行。

結果確認

新しいシート「ソート結果」が作成され、食費のデータが支払額の少ない順に並べ替えられています。


タイトルとURLをコピーしました