Google Apps Script(GAS)を使えば、スプレッドシートのフィルタを自動化できるっちゃ!今回は、createFilter()
メソッドを使って、基本的なフィルタの作成から、動的フィルタ、複合条件フィルタまでバッチリ解説するけん、最後まで読んでみてな。
1. フィルタの基本操作
まず、GASでスプレッドシートのフィルタを作成する基本のコードを見てみるばい。
function basicFilterCreation() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('SalesData');
const dataRange = sheet.getRange('A1:D100');
const newFilter = dataRange.createFilter();
}
このコードでは、A1:D100
の範囲にフィルタを設定しとる。シンプルやけど、これだけでもデータ管理が便利になるばい!
2. 既存フィルタを削除して安全に作成する
フィルタを作成する前に、すでにフィルタがあるかチェックして、重複を防ぐのが大事じゃ。
function safeFilterCreation() {
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getDataRange();
// 既存フィルタチェック
const existingFilter = range.getFilter();
if (existingFilter) {
existingFilter.remove();
}
// 新規フィルタ作成
const newFilter = range.createFilter();
}
これを使えば、二重フィルタの心配なし!
3. データ範囲を動的に設定する
データの行数が増えたり減ったりする場合、getDataRange()
を使えば、最新のデータ範囲にフィルタを適用できるけん便利ばい!
function dynamicRangeFilter() {
const sheet = SpreadsheetApp.getActiveSheet();
const dataRange = sheet.getDataRange();
dataRange.createFilter();
}
これで新しいデータが追加されても、ちゃんとフィルタが適用されるとさ。
4. 特定の列にフィルタ条件を設定する
setColumnFilterCriteria()
メソッドを使えば、特定の列だけフィルタリングできるとよ。
function columnSpecificFilter() {
const sheet = SpreadsheetApp.getActiveSheet();
const filter = sheet.getFilter();
const criteria = SpreadsheetApp.newFilterCriteria()
.setHiddenValues(['Inactive', 'Pending'])
.build();
filter.setColumnFilterCriteria(2, criteria); // B列に適用
}
B列のデータで「Inactive」「Pending」を非表示にするフィルタばい!
5. 複数の条件を組み合わせる
複数の列にフィルタをかける場合は、各列ごとに設定すればOK!
function multiColumnFilter() {
const sheet = SpreadsheetApp.getActiveSheet();
const filter = sheet.getFilter();
// 売上高が1000未満
const salesCriteria = SpreadsheetApp.newFilterCriteria()
.whenNumberLessThan(1000)
.build();
// 地域が「West」
const regionCriteria = SpreadsheetApp.newFilterCriteria()
.setVisibleValues(['West'])
.build();
filter.setColumnFilterCriteria(3, salesCriteria); // C列(売上高)
filter.setColumnFilterCriteria(4, regionCriteria); // D列(地域)
}
これで「売上1000未満」かつ「地域がWest」のデータだけ表示できるとさ!
6. フィルタの状態を監査・記録する
フィルタの設定を変更した履歴を記録しておくのもアリじゃ。
function logFilterChanges() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getActiveSheet();
const filter = sheet.getFilter();
const logSheet = ss.getSheetByName('FilterLog') || ss.insertSheet('FilterLog');
const logData = [
new Date(),
sheet.getName(),
JSON.stringify(filter.getColumnFilterCriteria(2))
];
logSheet.appendRow(logData);
}
これを実行すれば、「いつ・どのシートで・どんなフィルタが適用されたか」を記録できるけん、管理が楽になるばい!
まとめ
GASのcreateFilter()
メソッドを使えば、スプレッドシートのデータ管理がめちゃくちゃ便利になるっちゃ!
- 基本のフィルタ作成 →
createFilter()
を使えば簡単 - 安全なフィルタ操作 → 既存フィルタを削除してから作成
- 動的範囲の設定 →
getDataRange()
でデータ増減に対応 - 特定列のフィルタ →
setColumnFilterCriteria()
で細かい条件設定 - 複数条件の適用 → 複数列のフィルタを組み合わせる
- フィルタ履歴の記録 →
logFilterChanges()
で監査可能
業務効率化の第一歩として、GASを活用してみるばい!

スプレッドシートの個人フィルタをGoogle Apps Scriptで作成する方法 - Qiita
はじめにGoogleのスプレッドシートでフィルタを個人で作成してもらう運用をしていると、フィルタ1などよくわからないフィルタが増えすぎて困ることってよくありますよね。なので最初からある程度グル…

Class Filter | Apps Script | Google for Developers

[GAS]filterメソッドを用い条件に合ったデータを別シートに転記|カワムラ
恥ずかしながらGoogle Apps Scriptの反復メソッドがまだ理解できておりません。 アロー関数もなにそれ?というレベルです。 ようやく「あ、このパターンは実務でよく使いそうだな」と思ったケースが見つかったのでメモします。 下記のよ...
コメント