【GAS】スプレッドシートを任意の枚数複製する方法

a person standing on top of a large iceberg

こんにちわ。たろ(@tarohibi)です。

今日は、「GASでスプレッドシートを任意の枚数複製する方法」をご紹介します。

実装自体は簡単なので、手作業でやっている方は是非お試し下さい。

では、いってみます。

やりたいこと

どんなスプレッドシートでもいいんですが、複製するのって手間じゃないですか?何十枚・何百枚単位で複製かけるとなったら、手動ではうんざりモードに入ります。

こういった場合、GAS(Google Apps Script)を使用すれば、一瞬で作成できます。

ということで、コードをご紹介していきます。

完成形

GAS(Google Apps Script)の導入方法に関しては、他サイトでも載っていますので割愛します。
やり方は簡単なんで、是非1度試してみて下さい。
以下の完成形コードを入れます。

上記をコード入力して、一度ファイルを閉じます。

GASシートコピペ1
再度オープンすると、メニュー欄に各種メニューが追加されます。

GASシートコピペ2

その中にシート複製項目がありますので、任意の複製希望シートを選択した状態で、シート複製項目を押します。

GASシートコピペ3

押すと、何枚コピーするかメッセージボックスで聞いてきますので、希望枚数を入力します。

GASシートコピペ4

すると、プログラムが走って、希望枚数分複製されます。

各関数の意味と流れ(分からなくてOK)

各関数がどういう動きをしているかを解説します。

そんなもんなんだ的な感じで飛ばしてもらってもOKです。

①duplicateActiveSheet(numberOfCopies): 現在選択されているシートを、引数で指定された枚数だけ複製します。

②promptForNumberOfCopies(): メッセージボックスを表示して、複製するシートの枚数を入力させ、その枚数を返します。キャンセルが選択された場合は -1 を返します。

③executeDuplicationProcess(): メッセージボックスで複製するシートの枚数を入力し、入力が正しい場合にシートを複製する処理を実行します。

④onOpen(): スプレッドシートが開かれたときに実行される関数で、スプレッドシートにカスタムメニューを追加します。このメニューには、「シート複製」というアイテムが含まれており、クリックすると executeDuplicationProcess 関数が実行されます。

基本的な流れは次のとおりです。

①ユーザーがスプレッドシートを開くと、onOpen() 関数が実行され、カスタムメニューが追加されます。

②ユーザーが「シート複製」メニューアイテムをクリックすると、executeDuplicationProcess() 関数が実行されます。

③executeDuplicationProcess() 関数内で、promptForNumberOfCopies() 関数が実行され、メッセージボックスが表示され、複製するシートの枚数を入力させます。

④入力が正しい場合、duplicateActiveSheet(numberOfCopies) 関数が実行され、現在選択されているシートが指定された枚数だけ複製されます。

コード解説(分からなくてOK)

適宜コメントを入れていますが、自分も書いていて難しいなと思った所を解説します。

Array.fromメソッドを使用して、複製するコピーシート数分メソッドの第2引数で配列を作成しています。=マッピング関数
Mapメソッドみたいな動きをしています。まとめていっぺんにシートが作れるみたいなイメージを持っとけばいいと思います。

Array.fromメソッドで格納した配列内のコピーシート郡をforEachメソッドで1つずつシート作成名前付けして、複製していく処理を行っています。
アロー関数で省略していますが、配列内に格納されているシートname分複製していきます。

まとめ

以上、「GASでスプレッドシートを任意の枚数複製する方法」についてお伝えしました。

使うだけであれば、コードを有効化すればすぐにでも使用できます。

お手軽なので、お試し下さい。

ITGAS
スポンサーリンク
シェアする
たろをフォローする
お金らいふ

コメント

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