- 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
引数
名前 | 型 | 説明 |
---|---|---|
afterPosition | Integer | 指定した数字(行数)の下に追加される |
戻り値
Sheetオブジェクト
指定した行の上に追加する insertRowBefore(beforePosition)
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
sheet.insertRowBefore(2)
実行前
実行後
公式ドキュメント
https://developers.google.com/apps-script/reference/spreadsheet/sheet#insertrowbeforebeforeposition
引数
名前 | 型 | 説明 |
---|---|---|
beforePosition | Integer | 指定した数字(行数)の上に追加される |
戻り値
Sheetオブジェクト
insertRowsAfter/insertRowsBefore関数
指定した行の下に複数追加する insertRowsAfter(afterPosition)
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
sheet.insertRowsAfter(2, 3)
実行前
実行後
公式ドキュメント
引数
名前 | 型 | 説明 |
---|---|---|
afterPosition | Integer | 指定した数字(行数)の下に追加される |
howMany | Integer | 追加する行数 |
戻り値
Sheetオブジェクト
指定した行の上に複数追加する insertRowBefore(beforePosition)
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
sheet.insertRowsBefore(2, 3)
実行前
実行後
公式ドキュメント
引数
名前 | 型 | 説明 |
---|---|---|
beforePosition | Integer | 指定した数字(行数)の上に追加される |
howMany | Integer | 追加する行数 |
戻り値
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を使って指定行の下に新しい行を追加する方法をご紹介します