GASで別シートへのデータ転記を自動化する方法

先生

GASでスプレッドシートのデータ転記を自動化して、時間と労力を節約しましょう!🚀

GASで別シートへのデータ転記を自動化:基本と応用

Google Apps Script(GAS)を使って、Googleスプレッドシート間でデータを自動転記する方法を解説します。手作業での転記はミスも起こりやすく、時間もかかりますが、GASを使えばこれらの問題を解決できます。この記事では、基本的な転記方法から、条件に応じた応用的な転記まで、具体的なコード例を交えながら解説します。

GASは、Google Workspaceの様々なサービスを連携させるためのスクリプト言語です。JavaScriptをベースにしており、Webブラウザ上で動作するため、環境構築が不要で手軽に始められます。

この記事を読むことで、GASの基本的な知識と、スプレッドシート操作の自動化スキルを習得し、日々の業務効率化に役立てることができます。

基本的なデータ転記:シンプルな例

まずは、最も基本的なデータ転記の例を見てみましょう。ここでは、Sheet1のA1セルの値をSheet2のB2セルに転記するスクリプトを紹介します。

function transferData() {
  // スプレッドシートを取得
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  // 転記元のシートと転記先のシートを取得
  var sheet1 = ss.getSheetByName('Sheet1');
  var sheet2 = ss.getSheetByName('Sheet2');

  // 転記元の値を取得
  var value = sheet1.getRange('A1').getValue();

  // 転記先に値を設定
  sheet2.getRange('B2').setValue(value);
}

このコードは、以下のステップで動作します。

1. SpreadsheetApp.getActiveSpreadsheet() でアクティブなスプレッドシートを取得します。

2. ss.getSheetByName('Sheet1')ss.getSheetByName('Sheet2') で、それぞれのシートを取得します。

3. sheet1.getRange('A1').getValue() で、Sheet1のA1セルの値を取得します。

4. sheet2.getRange('B2').setValue(value) で、Sheet2のB2セルに取得した値を設定します。

このスクリプトを実行するには、GASエディタを開き、上記のコードを記述して保存します。その後、実行ボタンをクリックし、権限を承認すると、データが転記されます。

応用:複数のデータをまとめて転記

次に、複数のデータをまとめて転記する方法を見てみましょう。ここでは、Sheet1のA1:B10の範囲のデータをSheet2のC1:D10の範囲に転記するスクリプトを紹介します。

function transferMultipleData() {
  // スプレッドシートを取得
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  // 転記元のシートと転記先のシートを取得
  var sheet1 = ss.getSheetByName('Sheet1');
  var sheet2 = ss.getSheetByName('Sheet2');

  // 転記元の範囲を取得
  var range = sheet1.getRange('A1:B10');

  // 転記元の値を取得 (2次元配列)
  var values = range.getValues();

  // 転記先に値を設定
  sheet2.getRange('C1:D10').setValues(values);
}

このコードでは、sheet1.getRange('A1:B10').getValues() で、指定範囲のデータを2次元配列として取得します。そして、sheet2.getRange('C1:D10').setValues(values) で、取得した2次元配列を転記先の範囲にまとめて設定します。

この方法を使えば、大量のデータを効率的に転記できます。

条件付き転記:特定の条件を満たすデータのみ転記

さらに応用的な例として、特定の条件を満たすデータのみを転記する方法を紹介します。ここでは、Sheet1のA列の値が’OK’である行のB列の値を、Sheet2のA列に順番に転記するスクリプトを紹介します。

function transferConditionalData() {
  // スプレッドシートを取得
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  // 転記元のシートと転記先のシートを取得
  var sheet1 = ss.getSheetByName('Sheet1');
  var sheet2 = ss.getSheetByName('Sheet2');

  // 転記元の最終行を取得
  var lastRow = sheet1.getLastRow();

  // 転記先の最終行を取得
  var destRow = 1;

  // 2行目から最終行までループ
  for (var i = 2; i <= lastRow; i++) {
    // A列の値を取得
    var condition = sheet1.getRange(i, 1).getValue();

    // 条件が'OK'の場合
    if (condition === 'OK') {
      // B列の値を取得
      var value = sheet1.getRange(i, 2).getValue();

      // 転記先に値を設定
      sheet2.getRange(destRow, 1).setValue(value);

      // 転記先の行をインクリメント
      destRow++;
    }
  }
}

このコードでは、forループを使ってSheet1の各行を処理し、if (condition === 'OK') で条件を満たす行のみを転記します。転記先の行番号は、destRow 変数で管理しています。

このような条件付き転記は、データのフィルタリングや整理に役立ちます。

エラー処理:スクリプトの安定性を高める

GASのスクリプトを作成する際には、エラー処理を考慮することが重要です。エラーが発生した場合に、スクリプトが停止してしまうのを防ぎ、安定性を高めることができます。

例えば、シート名が存在しない場合にエラーが発生する可能性があります。これを防ぐために、try-catch文を使用することができます。

function transferDataWithErrorHandling() {
  try {
    // スプレッドシートを取得
    var ss = SpreadsheetApp.getActiveSpreadsheet();

    // 転記元のシートと転記先のシートを取得
    var sheet1 = ss.getSheetByName('Sheet1');
    var sheet2 = ss.getSheetByName('Sheet2');

    // 転記元の値を取得
    var value = sheet1.getRange('A1').getValue();

    // 転記先に値を設定
    sheet2.getRange('B2').setValue(value);
  } catch (e) {
    Logger.log('エラーが発生しました: ' + e);
  }
}

このコードでは、tryブロック内でデータ転記の処理を行い、エラーが発生した場合はcatchブロックでエラー内容をログに出力します。これにより、エラーが発生した場合でもスクリプトが停止することなく、エラー内容を確認することができます。

参考リンク

まとめ

GASを使ってスプレッドシート間のデータ転記を自動化する方法を解説しました。基本的な転記から、複数のデータの転記、条件付き転記、エラー処理まで、様々な方法を習得することで、日々の業務を効率化することができます。ぜひ、GASを活用して、スプレッドシートの操作を自動化してみてください。