特定のキーワードを含む行を検索し、別のシートにコピーする
Google Sheetsのアクティブなシート内の特定のキーワードを含む行を検索し、別のシートにコピーするスクリプトです。
function 特定の文字を含むデータを行ごとコピーして転記() {
// シートを定義する
var wh1 = SpreadsheetApp.getActiveSheet();
var wh2 = SpreadsheetApp.getActiveSpreadsheet().getSheets()[1];
// 検索キーワードを設定する
var SearchWord = "東京";
// 出力する行の開始位置
var J = 2;
// 最終行を取得する
var LastRow = wh1.getLastRow();
// 各行に対して処理を行う
for (var i = 2; i <= LastRow; i++) {
// 特定のキーワードを含む行の場合に処理を実行する
if (wh1.getRange(i, 1).getValue().indexOf(SearchWord) > -1) {
// 該当データを転記する
wh1.getRange(i, 1, 1, 3).copyTo(wh2.getRange(J, 1));
// 出力する行を1行ずつずらす
J++;
}
}
// 処理が完了したことを通知する
SpreadsheetApp.getUi().alert("完了");
}
解説
- 変数 wh1 には、アクティブなシートを設定。変数 wh2 には、wh1 の次の(右隣り)シートを設定します。
- 検索キーワードを変数
SearchWord
に設定。この場合は、文字列”東京”を検索キーワードとして指定。 - 検索キーワードを変数
SearchWord
に設定しています。この場合は、文字列”東京”を検索キーワードとして指定。 - アクティブなシートの最終行の位置を変数
LastRow
に設定。 - 最初の行から最終行までの各行について、現在の行に含まれる、特定の検索キーワードが含まれるかどうかをチェックします。
indexOf()
メソッドは、検索キーワードが見つかった場合に0以上の整数を返し、見つからなかった場合には-1を返します。 - 特定のキーワードを含む行の場合に、その行のデータを wh2 シートにコピーします。コピーが完了したら、出力する行を 1 行ずつずらします。
- 処理が完了したことを通知するために、メッセージボックスを表示します。
EXCELのVBAとのコードの違い
Excel VBA では使用されていた Range オブジェクトに対応するオブジェクトが、GAS では getRange メソッドによって得られることです。また、GAS では Excel VBA のような ActiveSheet プロパティが存在しないため、スプレッドシート上で操作する場合には、明示的にシートを指定する必要があります。
コメント