スプレッドシートのデータを別のシートにコピーしたいけれど、どうすればいいのか分からないという方へ。今回は、Google Apps Script(GAS)を使って、初心者でも簡単にデータをコピーする方法をご紹介します。パソコンやスマホの操作に不安がある方でも安心して取り組める内容です。
はじめになぜGASを使うのか?
普段、スプレッドシートでデータを入力したり編集したりしていると、「このデータを別のシートにも反映させたい」と思うことがありませんか?手動でコピー&ペーストを繰り返すのは手間がかかりますし、ミスが起こりやすいですよね。そこで登場するのが、Google Apps Script(GAS)です。GASを使えば、スプレッドシートの操作を自動化できるので、時間と手間を大幅に削減できます。
GASを使ったデータコピーの基本
GASを使ってデータをコピーする方法には、主に以下の2つがあります。
`copyTo()` メソッドを使う方法
この方法では、コピー元のシートをそのままコピー先のスプレッドシートに複製します。書式やデータ、シートの構成など、すべてをそのままコピーできます。
以下は、`copyTo()` メソッドを使ったサンプルコードです
function copySheet() {
var sourceSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = sourceSpreadsheet.getSheetByName("テンプレート");
var targetSpreadsheet = SpreadsheetApp.openById("コピー先のスプレッドシートID");
var copiedSheet = sourceSheet.copyTo(targetSpreadsheet);
copiedSheet.setName("新しいシート名");
}
このコードを実行すると、「テンプレート」シートが指定したコピー先のスプレッドシートに「新しいシート名」としてコピーされます。
`getValues()` と `setValues()` を使う方法
この方法では、コピー元のシートからデータを取得し、コピー先のシートにそのデータを貼り付けます。書式やシート構成はコピーされませんが、データの転記には適しています。
以下は、`getValues()` と `setValues()` を使ったサンプルコードです
function copyData() {
var sourceSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = sourceSpreadsheet.getSheetByName("データ元");
var targetSheet = sourceSpreadsheet.getSheetByName("データ先");
var data = sourceSheet.getRange("C10").getValues();
targetSheet.getRange("C10").setValues(data);
}
このコードを実行すると、「データ元」シートのからC10までのデータが、「データ先」シートの同じ範囲にコピーされます。
実際にやってみよう!ステップバイステップガイド
それでは、実際にGoogle Apps Scriptを使ってデータをコピーしてみましょう。
ステップ1スクリプトエディタを開く
- コピー元のスプレッドシートを開きます。
- メニューバーの「拡張機能」から「Apps Script」を選択します。
- 新しいタブでスクリプトエディタが開きます。
ステップ2コードを入力する
1. スクリプトエディタに、上記で紹介したサンプルコードをコピー&ペーストします。
2. 必要に応じて、シート名やスプレッドシートIDを自分の環境に合わせて変更します。
ステップ3コードを実行する
1. スクリプトエディタの上部にある「実行」ボタン(▶️)をクリックします。
2. 初めて実行する場合は、Googleアカウントへのアクセス許可を求められますので、指示に従って許可します。
これで、指定したシートや範囲のデータがコピーされるはずです。
よくある質問や疑問
質問1`copyTo()` メソッドと `getValues()` と `setValues()` の違いは何ですか?
`copyTo()` メソッドは、シート全体をそのままコピーするのに対し、`getValues()` と `setValues()` は、指定した範囲のデータのみをコピーします。前者は書式やシート構成も含めてコピーしたい場合に適しており、後者はデータのみを転記したい場合に適しています。
質問2コピー先のシートが存在しない場合、どうすればいいですか?
コピー先のシートが存在しない場合は、`getSheetByName()` で取得した際に `null` が返されます。その場合は、`insertSheet()` メソッドを使って新しいシートを作成することができます。
var targetSheet = targetSpreadsheet.getSheetByName("データ先");
if (!targetSheet) {
targetSheet = targetSpreadsheet.insertSheet("データ先");
}
質問3特定の条件に合ったデータだけをコピーしたい場合、どうすればいいですか?
特定の条件に合ったデータだけをコピーするには、`getValues()` で取得したデータをJavaScriptの配列操作でフィルタリングし、その結果を `setValues()` で貼り付ける方法があります。
例えば、A列が「完了」となっている行だけをコピーする場合
var data = sourceSheet.getRange("C10").getValues();
var filteredData = data.filter(function(row) {
return row === "完了";
});
targetSheet.getRange(1, 1, filteredData.length, filteredData.length).setValues(filteredData);
まとめ
今回は、Google Apps Scriptを使ってスプレッドシートのデータを別のシートにコピーする方法をご紹介しました。手動での作業を減らし、効率的にデータを管理するために、ぜひGASを活用してみてください。
他にも疑問やお悩み事があれば、お気軽にLINEからお声掛けください。




コメント