【GAS】スプレッドシートで行追加自動処理、追加ボタンや関数自動コピーまとめ【サンプルコード】

GAS自動連携・効率化
この記事は約10分で読めます。

スプレッドシートで行追加の自動処理をしたり、追加ボタンを作ったり、メニューに追加したり、関数を自動でコピーしたり、GASを使用すると色々な自動処理をすることができます。

この記事では、スプレッドシートで行追加の自動処理をするGASのやり方をまとめています。

この記事で解説しているメソッド

メソッド内容説明パラメータパラメータ説明
insertRows()指定行に空白行追加rowIndex行インデックス
insertRowBefore()上に1行追加beforePosition追加行の前位置
insertRowAfter()下に1行追加afterPosition追加行の後位置
insertRowsBefore()上に複数行追加beforePosition、howMany追加行の前位置、行数
insertRowsAfter()下に複数行追加afterPosition、howMany追加行の後位置、行数
copyTo()範囲をコピぺtargetコピーする範囲
addMenu()メニュー追加name、subMenusメニュー、サブメニュー

スプレッドシートで行追加自動処理をする方法

スポンサーリンク

スプレッドシートのGASで行追加を自動処理するには、insertRows()メソッドなどを使用します。

メソッド内容説明パラメータパラメータ説明追加できる行数
insertRows()指定行に空白行追加rowIndex行インデックス1
insertRowBefore()上に1行追加beforePosition追加行の前位置1
insertRowAfter()下に1行追加afterPosition追加行の後位置1
insertRowsBefore()上に複数行追加beforePosition、howMany追加行の前位置、行数複数
insertRowsAfter()下に複数行追加afterPosition、howMany追加行の後位置、行数複数

5種類のメソッドがありますが、
1行のみ追加できるメソッド、行数を指定して複数行を追加できるメソッド、
そして指定行の後(下)に追加か、前(上)に追加で使用するメソッドが異なります。

行追加をするinsertRows()

insertRowsメソッドはスプレッドシートに行追加する一番オーソドックスなメソッドです。
insertRows(rowIndex)
rowIndexパラメータには行番号(数字)を入力します。
1行目なら→insertRows(1)

動きとしては、insertRowBeforeメソッドと同じですが、
指定した行から下のすべての行を1つ下にシフトさせて行を追加します。

function sample() {
  //アクティブシートを取得
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  //行追加
  sheet.insertRows(1);
}

前(上)に1行追加するinsertRowBefore()

insertRowBeforeメソッドは前(上)に行を挿入するメソッドです。
動きはinsertRowsメソッドと同じです。

insertRowBefore(beforePosition)
beforePositionパラメータには行番号(数字)を入力します。
1行目なら→ insertRowBefore(1)

function sample() {
  //アクティブシートを取得
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  //行追加
  sheet.insertRowBefore(1);
}

後ろ(下)に1行追加するinsertRowAfter()

insertRowAfterメソッドは、後ろ(下)に行を挿入するメソッドです。
パラメータで指定された行の下に行を挿入します。

insertRowAfter(afterPosition)
afterPositionパラメータには行番号(数字)を入力します。
1行目なら→ insertRowAfter(1)

function sample() {
  //アクティブシートを取得
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  //行追加
  sheet.insertRowAfter(1);
}

前(上)に複数行追加するinsertRowsBefore()

insertRowsBeforeメソッドは、前(上)に複数行を挿入するメソッドです。
パラメータで指定された行の上に行を挿入します。

insertRowsBefore(beforePosition、howMany)
beforePositionは指定する行番号、howManyは何行追加するかを入力します。

1行目に2行挿入なら
insertRowsBefore(1,2)

function sample() {
  //アクティブシートを取得
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  //行追加
  sheet.insertRowsBefore(1,2);
}

後ろ(下)に複数行追加するinsertRowsAfter()

insertRowsAfterメソッドは、後ろ(下)に複数行を挿入するメソッドです。
パラメータで指定された行の下に行を挿入します。

insertRowsAfter(afterPosition、howMany)
afterPositionは指定する行番号、howManyは何行追加するかを入力します。

1行目に2行挿入なら
insertRowsAfter(1,2)

function sample() {
  //アクティブシートを取得
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  //行追加
  sheet.insertRowsAfter(1,2);
}

スプレッドシートに行追加のボタンやメニューを作成する

スプレッドシートに行追加のボタンやメニューを追加するには、
図形描写をしたりGASを作成する必要があります。

ボタンで作成してしまうとセル内に入れることができないため、
何かの拍子にボタンがズレてしまったり、
複数人で作業していると誰かが間違って消してしまう可能性もあります。

どちらの方法にしてもGASの作成は必要になってくるため、
ボタンで作成するよりもメニューに追加する方法がおすすめです。

図形描写で行追加自動処理のボタンを作成する

スプレッドシートに行追加のボタンを作成するには、
挿入から図形描写で作成して、スクリプト割り当てでGASの関数名を指定するだけです。

ボタン作成はメニューから図形描写を選択します。


図形描写の作成画面が開くので、図形のボタンをクリックして、ボタンっぽい図形を選択して作成

スポンサーリンク

好きな大きさに作成したら、テキストを追加したり色を変更したりできます。
作成が終わったら右上の「保存して終了」でスプレッドシートに表示されます。

作ったものをクリックして、右上の3点マークをクリックすると、メニューが表示されるのでスクリプトを割り当てを選択

ここでGASスプリクトの関数名を記入すれば、ボタンで動くスクリプトが完成します。
関数名はGASコードのfunctionの後ろで指定している英数字の名前です。
「()」は不要です。

メニューに行追加自動処理を作成する

メニューに追加するには、スプレッドシートを開いた時に追加されるように、
onOpen()で、addMenuメソッドを使用します。

function onOpen() {
  SpreadsheetApp
    .getActiveSpreadsheet()
    .addMenu('メニュー名',[
      {name:'サブメニュー名1',functionName:'ここに関数名'},
      {name:'サブメニュー名2',functionName:'ここに関数名'},
      {name:'サブメニュー名3',functionName:'ここに関数名'},
    ]);
}

実際にGASを作成するとこんな感じ

function onOpen() {
  SpreadsheetApp
    .getActiveSpreadsheet()
    .addMenu('行追加',[
      {name:'指定行に空白行追加 - insertRows()',functionName:'insertRowsMenu'},
      {name:'上に1行追加 - insertRowBefore()',functionName:'insertRowBeforeMenu'},
      {name:'下に1行追加 - insertRowAfter()',functionName:'insertRowAfterMenu'},
      {name:'上に複数行追加 - insertRowsBefore()',functionName:'insertRowsBeforeMenu'},
      {name:'下に複数行追加 - insertRowsAfter()',functionName:'insertRowsAfterMenu'},
      {name:'行コピーして関数挿入',functionName:'insertCopyTo'},
    ]);
}

自動で最終行などに行を追加して関数を自動でコピー・追記する方法

スプレッドシートに自動で行を追加するには、insertRowsメソッド等を使って最終行や途中行に行を追加して、setValueメソッドで入力したい関数を挿入します。

function insertlastRow() {
  //アクティブシートを取得
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  //最終行を取得
  var lastRow = sheet.getLastRow();

  //追加行数
  var rowNumber = 5;

  //最終行に5行を追加
  sheet.insertRowsAfter(lastRow,rowNumber);

  //関数挿入用
  var num = lastRow;

  //追加した5行のD列に関数を挿入
  for(let n=1; n<=rowNumber; n++){
    num++;
    sheet.getRange(lastRow+n,4,1,1)
    .setValue('=SUM(A'+num+':C'+num+')');
  }
}

サンプルコードでは、「=SUM(A:C)」という関数をD列に入れるようにしています。

行に合わせて関数の行数が変更できるように変数「num」に行番号を入れて、
for文で1行ずつ追加した行数だけ処理するようにしています。

setValueではなく、CopyToやgetValueとsetValueを組み合わせて、
既存の関数をコピーすることもできます。

CopyToで自動コピーする方法はこちらで説明しています。
【GAS】CopyTo、行列コピー、スプレッドシートで自動コピーまとめ【Google Apps Script】

最終行についてはこちらの記事で説明しています。
【GAS】スプレッドシートの最終行に追加、コピー、自動追加する方法まとめ【Google Apps Script】
【GAS】スプレッドシートで行列取得まとめ、最終行列、getLastrow、getLastcol【Google Apps Script】

GASで行を追加して自動処理するサンプルデータ

スプデッドシートで行を自動追加するサンプルデータはこちら
【Copori】GAS行自動追加サンプル

行追加自動処理サンプルデータ使い方

【使用方法】
1、【Copori】GAS行自動追加サンプルを開いてコピーしてください

2、メニューから「拡張機能」⇨「Apps Script」を開きます
※複数アカウントでログインしているとエラーで開けないので注意してください

3、シート最終行取得のGASなどを一度実行して、権限取得を行なってください。
権限取得の方法はこちら

4、スプレッドシートから実行のやり方
4-1,G3に追加する行番号を22〜50の数値で入力してください
4-2,複数行メソッドの場合はH3に追加する行数を入力してください
4-3.各メソッドの処理実行をチェックしたり「実行」を押すと処理が実行されます
4-4,メニューの「行追加」からも実行可能です

5、シート2の初期化する時は、「初期化」のチェックボックスをチェックしてください。
チェックすると、初期化され初期化チェックが外れます。

行追加自動処理サンプルデータGASコード詳細

スプレッドシートで行追加の自動処理をするサンプルコードは、
ここまで説明しているメソッドを使用して、行をシートから取得するようにしているだけなので、基本的にこの記事に書いてあるサンプルコードと同じです。

チェックボックスと連動している箇所は、
onEditで編集された箇所を取得してswitch文で分岐処理を行なっています。

switch文についてはこちら
【GAS】switchのcaseで複数処理、GASで複数分岐まとめ【Google Apps Script】

このサイトではサンプルデータを配布して、
実際に動かして学べるように記事を作成しているので、
他の記事も参考にして動かせるようにしてみてください。

ありがとうございました!

スポンサーリンク

コメント

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