初心者でもできる!Google Apps Scriptでスプレッドシートのデータを別のシートにコピーする方法

パソコンパソコン・スマホ教室
スポンサーリンク

スプレッドシートのデータを別のシートにコピーしたいけれど、どうすればいいのか分からないという方へ。今回は、Google Apps Script(GAS)を使って、初心者でも簡単にデータをコピーする方法をご紹介します。パソコンやスマホの操作に不安がある方でも安心して取り組める内容です。

スポンサーリンク

はじめになぜGASを使うのか?

Googleスプレッドシートのイメージ

Googleスプレッドシートのイメージ

普段、スプレッドシートでデータを入力したり編集したりしていると、「このデータを別のシートにも反映させたい」と思うことがありませんか?手動でコピー&ペーストを繰り返すのは手間がかかりますし、ミスが起こりやすいですよね。そこで登場するのが、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スクリプトエディタを開く

  1. コピー元のスプレッドシートを開きます。
  2. メニューバーの「拡張機能」から「Apps Script」を選択します。
  3. 新しいタブでスクリプトエディタが開きます。

ステップ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);

今すぐ解決したい!どうしたらいい?

LINE公式

いま、あなたを悩ませているITの問題を解決します!
「エラーメッセージ、フリーズ、接続不良…もうイライラしない!」

あなたはこんな経験はありませんか?

✅ ExcelやWordの使い方がわからない💦
✅ 仕事の締め切り直前にパソコンがフリーズ💦
✅ 家族との大切な写真が突然見られなくなった💦
✅ オンライン会議に参加できずに焦った💦
✅ スマホの重くて重要な連絡ができなかった💦

平均的な人は、こうしたパソコンやスマホ関連の問題で年間73時間(約9日分の働く時間!)を無駄にしています。あなたの大切な時間が今この悩んでいる瞬間も失われています。

LINEでメッセージを送れば即時解決!

すでに多くの方が私の公式LINEからお悩みを解決しています。

最新のAIを使った自動応答機能を活用していますので、24時間いつでも即返信いたします。

誰でも無料で使えますので、安心して使えます。

問題は先のばしにするほど深刻化します。

小さなエラーがデータ消失重大なシステム障害につながることも。解決できずに大切な機会を逃すリスクは、あなたが思う以上に高いのです。

あなたが今困っていて、すぐにでも解決したいのであれば下のボタンをクリックして、LINEからあなたのお困りごとを送って下さい。

相談しに行く

ぜひ、あなたの悩みを私に解決させてください。

まとめ

今回は、Google Apps Scriptを使ってスプレッドシートのデータを別のシートにコピーする方法をご紹介しました。手動での作業を減らし、効率的にデータを管理するために、ぜひGASを活用してみてください。

他にも疑問やお悩み事があれば、お気軽にLINEからお声掛けください。

コメント

タイトルとURLをコピーしました