複数のGoogleスプレッドシートを運用していると、特定シートのデータを別のスプレッドシートに同期したい場面があります。
この用途で活用されるのがIMPORTRANGE関数です。
しかし、毎回手作業で関数を貼り付けたり、複数シートへの設定を個別に行ったりすると管理負担が増えます。
そこで本記事では、GAS(Google Apps Script)を用いてIMPORTRANGE関数を別シートへ自動挿入する手順を解説します。
実行結果の例

スクリプトを実行すると、対象セルにIMPORTRANGE関数が自動入力され、別シートのデータが読み込まれます。
スクリプトコード
以下のスクリプトを、スプレッドシートのメニュー「拡張機能」>「Apps Script」のエディタへ貼り付けて保存してください。
IMPORTRANGE関数の基本仕様や構文は以下の記事で解説しています。

function myFunction() {
// 書き込み先(記載したいシート)
var write_id = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
var write_sheet_name = "シート1";
// 参照元(読み込みたいシート)
var source_id = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
var source_sheet_name = "シート1";
// スプレッドシートの取得
var write_ss = SpreadsheetApp.openById(write_id);
var write_sheet = write_ss.getSheetByName(write_sheet_name);
// IMPORTRANGE関数を生成
var formula = '=IMPORTRANGE("https://docs.google.com/spreadsheets/d/' + source_id + '","' + source_sheet_name + '!A:Z")';
// 記載先のシートのA1に書き込み
write_sheet.getRange("A1").setValue(formula);
}設定と実行手順
- スクリプト内の
write_idに 連携先スプレッドシートのID を入力 - write_sheet_nameに書き込み先のシート名、source_idに参照元ファイルのID、source_sheet_nameに参照元シート名を指定します。旧説明の
sheet_nameという変数は掲載コードに存在しません。 - スクリプトを実行すると、連携先シートのセルA1に
IMPORTRANGE関数が自動で設定されます
※ 初回実行時または初回連携時は、セル上に「アクセスを許可」ボタンが表示される場合があります。
連携先の編集者が参照元のデータを取り込める状態になるため、共有相手と取り込み対象を確認してから許可してください。
GASの実行承認とIMPORTRANGEの接続許可は別です。
応用のヒント
- シート一覧をループ処理して複数シートへ一括設定
- 参照範囲を変数化して動的に切り替え
- 数式入力と連動させた集計表やグラフ更新の自動化
この記事で紹介しているコードは、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。
スプレッドシートの関数を使った記事は、ほかにもあります。




まとめ
- IMPORTRANGE関数の設定を自動化できる
- 複数シートの連携管理にかかる工数を削減できる
- 数式を再入力する手間を減らせるが、誤削除を防止するセル保護は別途必要
シート間のデータ連携を頻繁に行う業務では、関数の自動挿入によって保守性を高められます。
特定の条件に合致するデータのみを抽出したい場合や対象シートを絞り込みたい場合など、要件に応じたカスタマイズも検討できます。
このコードはA1の既存の値や数式を上書きします。
空の検証用シートで実行し、取り込む範囲にも他のデータを置かないでください。
掲載コードは「シート1」のような単純なシート名を想定しています。
空白や記号を含む名前は範囲文字列での引用・エスケープが必要になるため、そのまま流用しないでください。
書き込み先のシート名が存在しない場合もエラーになります。
A:Zは全行を対象とするため、大量データではA1:Z1000など実際に必要な範囲に絞ってください。
更新の反映には待ち時間があり、リアルタイムの双方向同期ではありません。
ループや条件抽出は応用案で、掲載コードには含まれません。
実行後はA1の数式、接続許可、取り込み結果を確認してください。
