Googleスプレッドシートのコピーを簡単に作る方法【copy関数の使い方】

Googleスプレッドシートは、オンラインで表計算を行う便利なツールです。しかし、時にはスプレッドシートのコピーを作りたいときもあります。例えば、テンプレートとして使うスプレッドシートを複製したり、バックアップとして保存したり、別のアカウントに移動したりするときなどです。

Googleスプレッドシートのコピーを作る方法はいくつかありますが、今回はGoogle Apps Script(GAS)を使って、プログラムでコピーを作る方法を紹介します。GASは、Googleのサービスを操作できるJavaScriptベースのスクリプト言語です。GASを使えば、スプレッドシートのコピーを簡単に作ることができます

💡この記事でわかること
  • GASのcopy関数の使い方
  • copy関数の引数と戻り値の意味
  • copy関数の活用例

GASのcopy関数の使い方

GASのcopy関数は、スプレッドシートのコピーを作る関数です。copy関数は、Spreadsheetクラスのメソッドとして定義されています。Spreadsheetクラスは、スプレッドシートを表すクラスです。copy関数は、以下のように使います。

// スプレッドシートを取得
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

// スプレッドシートのコピーを作る
const copy = spreadsheet.copy("コピーの名前");

このコードでは、アクティブなスプレッドシートを取得して、そのコピーを作っています。copy関数は、引数としてコピーの名前を受け取ります。コピーの名前は、任意の文字列で指定できます。コピーの名前を省略した場合は、元のスプレッドシートの名前に「Copy of」が付加された名前になります。

copy関数は、コピーしたスプレッドシートを表すSpreadsheetオブジェクトを返します。このオブジェクトを使えば、コピーしたスプレッドシートを操作できます。例えば、以下のコードでは、コピーしたスプレッドシートのURLを取得して、ログに出力しています。

// スプレッドシートを取得
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

// スプレッドシートのコピーを作る
const copy = spreadsheet.copy("コピーの名前");

// コピーしたスプレッドシートのURLを取得
const url = copy.getUrl();

// URLをログに出力
Logger.log(url);

このコードを実行すると、コピーしたスプレッドシートのURLがログに表示されます。このURLをクリックすれば、コピーしたスプレッドシートを開くことができます。

copy関数の活用例

copy関数を使えば、スプレッドシートのコピーを作ることができますが、そのままではあまり便利ではありません。コピーしたスプレッドシートは、元のスプレッドシートと同じアカウントに作成されます。また、コピーしたスプレッドシートは、元のスプレッドシートと同じ共有設定や保護設定を引き継ぎます。これらの設定を変更したい場合は、コピーしたスプレッドシートを操作する必要があります。

そこで、copy関数を他のGASの関数と組み合わせて、より便利に使う方法を紹介します。以下の例では、コピーしたスプレッドシートを別のアカウントに移動する方法を示します。

// スプレッドシートを取得
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

// スプレッドシートのコピーを作る
const copy = spreadsheet.copy("コピーの名前");

// コピーしたスプレッドシートのIDを取得
const id = copy.getId();

// コピーしたスプレッドシートのファイルを取得
const file = DriveApp.getFileById(id);

// 移動先のアカウントのメールアドレスを指定
const email = "移動先のアカウントのメールアドレス";

// 移動先のアカウントに編集権限を付与
file.addEditor(email);

// 元のアカウントの編集権限を削除
file.removeEditor(Session.getEffectiveUser());

このコードでは、まずスプレッドシートのコピーを作ります。次に、コピーしたスプレッドシートのIDを取得します。IDは、スプレッドシートを一意に識別する文字列です。IDを使えば、DriveAppクラスのgetFileById関数で、コピーしたスプレッドシートのファイルを取得できます。DriveAppクラスは、Googleドライブを操作するクラスです。

ファイルを取得したら、移動先のアカウントのメールアドレスを指定して、そのアカウントに編集権限を付与します。編集権限を付与するには、ファイルのaddEditor関数を使います。addEditor関数は、引数としてメールアドレスを受け取ります。メールアドレスは、移動先のアカウントのものにします。

編集権限を付与したら、元のアカウントの編集権限を削除します。編集権限を削除するには、ファイルのremoveEditor関数を使います。removeEditor関数は、引数としてメールアドレスを受け取ります。メールアドレスは、元のアカウントのものにします。元のアカウントのメールアドレスを取得するには、SessionクラスのgetEffectiveUser関数を使います。Sessionクラスは、現在のユーザーの情報を取得するクラスです。getEffectiveUser関数は、現在のユーザーを表すUserオブジェクトを返します。

このコードを実行すると、コピーしたスプレッドシートが別のアカウントに移動されます。移動されたスプレッドシートは、移動先のアカウントのマイドライブに表示されます。移動元のアカウントは、移動されたスプレッドシートにアクセスできなくなります。

記事の続きを書いてくださいというリクエストにお応えします。以下のマークダウン形式の記事を参考にしてください。

copy関数の注意点

copy関数を使ってスプレッドシートのコピーを作るときには、いくつかの注意点があります。以下に、主な注意点を挙げます。

  • copy関数は、スプレッドシートの全てのシートをコピーします。特定のシートだけをコピーしたい場合は、copyTo関数を使います。copyTo関数は、Sheetクラスのメソッドとして定義されています。Sheetクラスは、スプレッドシートのシートを表すクラスです。copyTo関数は、引数としてコピー先のスプレッドシートを受け取り、コピーしたシートを表すSheetオブジェクトを返します。
  • copy関数は、スプレッドシートのコピーを作成する際に、元のスプレッドシートと同じフォルダに保存します。別のフォルダに保存したい場合は、DriveAppクラスのmoveTo関数を使います。moveTo関数は、Fileクラスのメソッドとして定義されています。Fileクラスは、Googleドライブのファイルを表すクラスです。moveTo関数は、引数として移動先のフォルダを受け取り、移動したファイルを表すFileオブジェクトを返します。
  • copy関数は、スプレッドシートのコピーを作成する際に、元のスプレッドシートと同じトリガーを引き継ぎます。トリガーとは、特定のイベントが発生したときにGASの関数を実行する仕組みです。トリガーを変更したい場合は、ScriptAppクラスのgetProjectTriggers関数とdeleteTrigger関数を使います。ScriptAppクラスは、GASのプロジェクトを操作するクラスです。getProjectTriggers関数は、プロジェクトに設定されたトリガーの配列を返します。deleteTrigger関数は、引数として削除したいトリガーを受け取り、トリガーを削除します。

以上のように、copy関数を使ってスプレッドシートのコピーを作るときには、いくつかの注意点があります。copy関数は、スプレッドシートのコピーを作るだけではなく、コピーしたスプレッドシートを操作するためのオブジェクトを返します。このオブジェクトを使って、コピーしたスプレッドシートの名前やURLやフォルダやトリガーなどを変更することができます。copy関数を使えば、スプレッドシートのコピーを自由にカスタマイズできます。

まとめ

この記事では、GASのcopy関数を使って、スプレッドシートのコピーを作る方法を紹介しました。

copy関数は、スプレッドシートを表すSpreadsheetオブジェクトのメソッドとして定義されています。copy関数は、引数としてコピーの名前を受け取り、コピーしたスプレッドシートを表すSpreadsheetオブジェクトを返します。copy関数を他のGASの関数と組み合わせれば、スプレッドシートのコピーをより便利に操作できます。例えば、コピーしたスプレッドシートを別のアカウントに移動することができます。

参考文献

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet?hl=ja#copyname

GASをイチから学びたい方へ

このブログでは断片的な説明になってしまっていますが、本書は幅広いGASの内容が網羅的に学べる本です。イチから学びたい方は是非読んでみてください。

すでにGASをある程度マスターした方にも辞書的に手元に置いておくと便利です。