見出し画像

【簡単に自動化】GASで特定の条件にマッチする行を新しいシートに自動コピーする方法

「スプレッドシートで特定の箇所を別シートに自動でコピーしたい」
「GASで業務効率化ができるって聞いたけどよくわからん」
「非エンジニアでも簡単にできる方法教えて!」

本記事ではこのような方を対象に、GAS(Google App Script)を使ってスプレッドシートで特定の条件にマッチするデータ行のみを新しいシートに自動的にコピーする方法をご紹介します。

■本記事で分かること
GASを使ってスプレッドシートで特定の条件にマッチするデータ行のみを新しいシートに自動的にコピーする方法

■本記事の信頼性
私は、本業でChatGPTなどのAIツールを活用して効率化を実現し、ほぼ毎日定時で帰宅。家族との充実した時間を確保している「なおき」といいます。

AIと全く無縁の体育系で文系出身(数学Ⅱで終わりました)の私でもできる時短術をわかりやすく説明できるよう、Xなどを活用して情報発信しています。

この記事を読んでくださった方々が1分でも早く帰れることを願い、今回はGASを使ってスプレッドシートで特定の条件にマッチするデータ行のみを新しいシートに自動的にコピーする方法をご紹介します!


1.Googleスプレッドシートの準備


まずは、Googleスプレッドシートで重複した内容が記載されているデータを作成します。

今回は簡単な名簿を作成してみました。

2.GAS(Google App Script)の設定


それでは次にGASの設定に入っていきます。

ステップ1:Apps Scriptを開く

Googleスプレッドシートのメニューバーから
「拡張機能」→「Apps Script」を選択します。

ステップ2:コードの入力と一部修正

Apps Scriptが開いたら、デフォルトで入力されている部分のコードを削除してください。

同じところに以下のコードをコピペします。

function copyRowsToNewSheetBasedOnCondition() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sourceSheet = ss.getSheetByName("元のシート名"); // 元のシート名をここに入力
  var targetSheetName = "条件にマッチしたデータ"; // 新しいシートの名前
  var targetSheet = ss.getSheetByName(targetSheetName);
  
  // 対象のシートが存在しない場合は新しく作成
  if (!targetSheet) {
    targetSheet = ss.insertSheet(targetSheetName);
  } else {
    // シートが既に存在する場合は内容をクリア
    targetSheet.clear();
  }
  
  var data = sourceSheet.getDataRange().getValues(); // 元のシートのデータを全て取得
  var newData = [];
  
  for (var i = 0; i < data.length; i++) {
    if (data[i][0] == "特定条件") { // A列の値が"特定条件"に一致するかチェック
      newData.push(data[i]); // 条件にマッチした行を新しい配列に追加
    }
  }
  
  // 新しいデータがあれば新しいシートに書き込む
  if (newData.length > 0) {
    targetSheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
  }
}

このコードは、A列の値が特定の条件にマッチする行を元のシートから検索し、それらの行を新しいシートにコピーするものです。

使用にあたってはご自身のスプレッドシートと同様の形式にしていく必要があるので、以下の部分を修正してください。

var sourceSheet = ss.getSheetByName("元のシート名"); // 

「元のシート名」の部分を実際のシート名と同じにしてください。
今回は、デフォルト設定の「シート1」を使用します。

次に、「特定条件」の部分を実際のデータから指定してください。

 for (var i = 0; i < data.length; i++) {
    if (data[i][0] == "特定条件") { // A列の値が"特定条件"に一致するかチェック
      newData.push(data[i]); // 条件にマッチした行を新しい配列に追加

このif (data[i][0] == "特定条件")の部分に先ほど作成したデータのA列の内、「Arice」を入力してみます。

実際に修正したコードは以下のようになります。
修正後は必ず保存マーク💾を押してください。

シート名と特定条件を変更したコード

ステップ3:実行及び権限の承認

保存出来たら、「▷実行」の部分をクリックして関数copyRowsToNewSheetBasedOnConditionを実行します。

実行すると権限の承認を求められるので、以下の画像の赤枠部分をクリックしていってください。

実行すると権限の承認を求められるので、以下の画像の赤枠部分をクリックしていってください。

3.GAS(Google App Script)の実行

ここまでの作業が終了したら、最初に作成したGoogleスプレッドシートに戻ってください。

特定条件で指定した「Alice」の行が新しいシートにコピーされていることが分かります。

新しいシートにコピーされた状況

以上で作業は終わりです!
お疲れ様でした!

4.まとめ

今回は、「GASを使ってスプレッドシートで特定の条件にマッチするデータ行のみを新しいシートに自動的にコピーする方法」をテーマに紹介しましたが、いかがだったでしょうか?

  1. Googleスプレッドシートの準備

  2. GAS(Google App Script)のコード修正

  3. GASの実行

上記の内容が実行できれば、ワンクリックで特定の条件にマッチするデータ行のみを新しいシートに自動的にコピーできるようになります!

複数行にわたるデータ処理を行うことが多い部署の方々は、今回のコードを使用しているデータ形式にカスタマイズすることができれば、業務効率化につながるのではないでしょうか?

そして、ChatGPTで自分に合ったGASコードを作成するためのプロンプト集を作成しましたので、是非ご覧ください!

今回紹介した内容で皆さんの業務が少しでも効率化できれば、スキ、SNSでの紹介をしていただけると大変励みになりますので、何卒よろしくお願いします!

このほか、AI×時短術の知識をX(旧Twitter)で紹介していますので、是非フォローしてください!

この記事が気に入ったらサポートをしてみませんか?