Googleフォームの回答を新しいスプレッドシートにもリアルタイム反映する方法

クラウドサービス

Googleフォームの回答はスプレッドシートに自動的に記録されますが、編集用と原本の2つのスプレッドシートを作成し、リアルタイムで更新されるようにする方法はあるのでしょうか?本記事では、Googleフォームの仕様と、複数のスプレッドシートに回答を反映させる方法を解説します。

Googleフォームの「スプレッドシートで表示」の仕様

Googleフォームでは、「スプレッドシートで表示」を選択すると、回答がリアルタイムで反映されるスプレッドシートが作成されます。

仕様のポイント

  • Googleフォームの回答は、1つのスプレッドシートにしか直接リンクできない
  • 一度リンクしたスプレッドシートを変更すると、以前のスプレッドシートへの更新は停止する
  • 新しいスプレッドシートを作成する場合は、手動でデータをコピーするか、自動転送の設定が必要

そのため、リアルタイムで2つのスプレッドシートに同じデータを反映させるには、GoogleスクリプトやIMPORTRANGE関数を活用する必要があります。

方法1:IMPORTRANGE関数を使用する

IMPORTRANGE関数を使用すると、Googleフォームとリンクされたスプレッドシートの内容を、別のスプレッドシートにリアルタイムで同期できます。

手順

  1. Googleフォームとリンクされたスプレッドシート(元データ)を開く
  2. 新しいスプレッドシートを作成
  3. 新しいスプレッドシートのA1セルに以下の関数を入力
=IMPORTRANGE("元のスプレッドシートのURL", "フォームの回答1!A:Z")

この関数は、元のスプレッドシートの「フォームの回答1」シートのA列からZ列までのデータを、新しいスプレッドシートにリアルタイムでコピーします。

注意点

  • 初回使用時に「アクセスを許可する」ボタンが表示されるので、承認が必要
  • 元のスプレッドシートに変更が加わるたびに、自動的にデータが更新される

方法2:Google Apps Scriptを使用する

IMPORTRANGE関数ではなく、Google Apps Scriptを使うことで、フォームの回答が追加されるたびに、複数のスプレッドシートに自動転送することも可能です。

手順

  1. Googleフォームとリンクされたスプレッドシートを開く
  2. 「拡張機能」→「Apps Script」を選択
  3. 以下のスクリプトを入力
function copyToNewSheet(e) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("フォームの回答1");
  var newSheet = SpreadsheetApp.openById("新しいスプレッドシートのID").getSheetByName("Sheet1");
  var lastRow = sheet.getLastRow();
  var lastColumn = sheet.getLastColumn();
  var data = sheet.getRange(lastRow, 1, 1, lastColumn).getValues();
  newSheet.appendRow(data[0]);
}

スクリプトの動作

  • フォームに新しい回答が追加されると、自動で新しいスプレッドシートにもコピー
  • 元のデータを変更しても、新しいシートには影響しない

トリガーの設定

このスクリプトを実行するためには、Google Apps Scriptの「トリガー」を設定する必要があります。

  1. Apps Scriptの「トリガー」を開く
  2. 「新しいトリガーを追加」
  3. 関数「copyToNewSheet」を選択
  4. イベントの種類「フォーム送信時」を選択
  5. 「保存」をクリック

これにより、Googleフォームに新しい回答が追加されるたびに、別のスプレッドシートに自動でコピーされます。

まとめ:Googleフォームの回答をリアルタイムで複数のスプレッドシートに反映する

Googleフォームの回答を編集用と原本の2つのスプレッドシートで管理したい場合、以下の方法が有効です。

  • IMPORTRANGE関数を使う(簡単な方法・元データと同期)
  • Google Apps Scriptを使う(よりカスタマイズ可能・元データを編集しても影響を受けない)

この方法を活用することで、回答の編集をしても元データを保持しつつ、リアルタイムの更新を管理できます。

コメント

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