
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を活用して、スプレッドシートの操作を自動化してみてください。