Googleスプレッドシートは、小規模な業務管理やチームの情報共有でよく使われる便利なツールです。しかし、データが増えると「どの情報をどこに保存すべきか」を整理する作業に手間がかかります。
特に、売上管理や顧客リストのように複数の条件で分類が必要なデータでは、毎回コピー&ペーストを行うのは非効率です。こうした問題は Google Apps Script(GAS) を活用することで解決できます。
本記事では、入力データを条件ごとに自動で別シートに仕分ける仕組みを、コード例付きで解説します。
データの自動仕分けは、さまざまな場面で役立ちます。たとえば:
- 顧客のステータスに応じて「新規」「継続」「離脱」などに自動分類
- 売上データを「東京支店」「大阪支店」など地域ごとに振り分け
- 問い合わせフォームの内容を「技術サポート」「営業」へ自動振り分け
この仕組みにより、担当者は必要なデータをすぐに確認でき、作業効率が向上します。また、人的な分類ミスも減らせる点も大きなメリットです。
次に、実際の仕分けスクリプトを紹介します。以下の例では、シート「入力」からデータを読み込み、2列目の値が「A」であれば「SheetA」へ、「B」であれば「SheetB」へ振り分けます。
function sortRows() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const inputSheet = ss.getSheetByName("入力");
const data = inputSheet.getDataRange().getValues();
for (let i = 1; i < data.length; i++) {
const row = data[i];
const category = row[1]; // 2列目の値を判定
let targetSheet;
if (category === "A") {
targetSheet = ss.getSheetByName("SheetA");
} else if (category === "B") {
targetSheet = ss.getSheetByName("SheetB");
}
if (targetSheet) {
targetSheet.appendRow(row);
}
}
}
このコードを貼り付けるだけで、シンプルな仕分けが実現できます。
スクリプトを作っただけでは、毎回手動で実行する必要があります。そこで便利なのが トリガー です。
- GASエディタで「トリガー」を開く
sortRows
を選択- 「イベントの種類」で「フォーム送信後」や「時間主導型」を設定
これにより、新しいデータが追加されたタイミングや定期的な時間で自動的にスクリプトが動作し、仕分けが行われます。
// 時間主導トリガー用の例
function createTimeTrigger() {
ScriptApp.newTrigger("sortRows")
.timeBased()
.everyHours(1) // 1時間ごとに実行
.create();
}
仕分けの条件を増やしたり、複数列を組み合わせて判定することも可能です。たとえば、地域と商品カテゴリーの両方で振り分ける場合は以下のように書けます。
if (category === "A" && row[2] === "東京") {
targetSheet = ss.getSheetByName("TokyoA");
}
また、仕分け後に「入力」シートから該当データを削除する処理を加えれば、シートが肥大化するのを防げます。
本記事では、Googleスプレッドシートで入力データを条件ごとに自動で仕分ける方法を紹介しました。GASを使うことで、単純な作業を自動化し、業務の効率化につなげられます。
今回のサンプルコードは基本的な仕組みですが、条件分岐を増やすことでさまざまな業務に応用できます。ぜひ、自分の業務フローに合わせてカスタマイズしてみてください。
また、APIの仕様変更やうまく動作しないなどがありましたら、遠慮なくコメントまでお寄せください!