行を挿入する | insertRowAfter()/insertRowBefore()【GAS】

たけだ

GASを使って指定行の下に新しい行を追加する方法をご紹介します

💡この記事でわかること
  • insertRowAfter/insertRowBefore関数を使って新しい行を追加する方法
  • insertRowsAfter/insertRowsBefore関数を使って複数行を一度に追加する方法
  • それぞれの関数の使い分け方

insertRowAfter/insertRowBefore関数

指定した行の下に追加する insertRowAfter(afterPosition)

const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
sheet.insertRowAfter(2)

実行前

実行後

公式ドキュメント

https://developers.google.com/apps-script/reference/spreadsheet/sheet#insertrowafterafterposition

引数

名前説明
afterPositionInteger指定した数字(行数)の下に追加される

戻り値

Sheetオブジェクト

指定した行の上に追加する insertRowBefore(beforePosition)

const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
sheet.insertRowBefore(2)

実行前

実行後

公式ドキュメント

https://developers.google.com/apps-script/reference/spreadsheet/sheet#insertrowbeforebeforeposition

引数

名前説明
beforePositionInteger指定した数字(行数)の上に追加される

戻り値

Sheetオブジェクト

insertRowsAfter/insertRowsBefore関数

指定した行の下に複数追加する insertRowsAfter(afterPosition)

const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
sheet.insertRowsAfter(2, 3)

実行前

実行後

公式ドキュメント

https://developers.google.com/apps-script/reference/spreadsheet/sheet#insertrowsafterafterposition,-howmany

引数

名前説明
afterPositionInteger指定した数字(行数)の下に追加される
howManyInteger追加する行数

戻り値

Sheetオブジェクト

指定した行の上に複数追加する insertRowBefore(beforePosition)

const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
sheet.insertRowsBefore(2, 3)

実行前

実行後

公式ドキュメント

https://developers.google.com/apps-script/reference/spreadsheet/sheet#insertrowsbeforebeforeposition,-howmany

引数

名前説明
beforePositionInteger指定した数字(行数)の上に追加される
howManyInteger追加する行数

戻り値

Sheetオブジェクト

関数の使い分け

ぴよこ

行を追加する関数が色々ありますがどう使い分ければよいのでしょうか

たけだ

Before/Afterは、先頭行・最後尾の行の追加の時以外はお好みでOKです

一行/複数行は、なるべく関数の呼び出しが少なくできるように複数行のでの追加が良いでしょう

Before/Afterの使い分け

例えばこの例のように一番上の行に追加したい場合、Beforeを使うことになります。

const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
sheet.insertRowBefore(1)

実行後


また最後尾の行の下に列を追加のような場合はAfterを使うと便利です。

const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
sheet.insertRowAfter(sheet.getLastRow())

実行後

1行だけ追加/複数行追加の使い分け

3行追加したい場合に、1行だけ追加のinsertRowAfterを使うと次のようになります。

const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
sheet.insertRowAfter(2)
sheet.insertRowAfter(2)
sheet.insertRowAfter(2)

insertRowsAfterを使うと次のようになります。

const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
sheet.insertRowsAfter(2, 3)

プログラムとしてinsertRowsAfterの方が1行で書けてスマートなことは見た目でわかると思います。また、行追加を3回行うより1度の呼び出しで3行追加したほうが処理が早くなります

極端な例で100行追加してみたときの処理時間の違いは次の通りです。

使った関数処理時間
insertRowAfterを100回約20秒
insertRowsAfterで100行追加約1秒

100行でも、この程度の処理時間の差が生まれます。GASの一度実行の処理時間には限りがありますので、なるべく時間が節約できるようなプログラムを書くように心がけましょう。

まとめ

たけだ

以上、GASを使って行を挿入する方法でした。

最後まで読んでいただきありがとうございました!

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

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

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