• 公開日:

スプレッドシートの関数を使って自動で行を追加する方法

Google スプレッドシートで行を自動で追加するような関数があれば便利なのにと考えたことはありませんか?

スプレッドシートに内蔵されている始めから使用できる関数の中に行を自動で追加するような関数はありません。

しかし、GASで関数を作成することで、そのような関数が使用できるようになります。

この記事では、スプレッドシートで関数を使って自動で行を追加する方法を分かりやすく紹介します。

スプレッドシートの関数を使って自動で行を追加する方法

Google スプレッドシートのGASで関数を作成し、関数を使って自動で行を追加する方法を以下より詳しく解説します。

「Apps Script」を順に選択

「拡張機能」、②「Apps Script」を順に選択します。

以下のショートカットキーでも「Apps Script」を選択することが出来ます。

OSショートカットキー
WindowsAlt+N,E (Google Chrome)
Alt+Shift+N,E (その他ブラウザ)
MacOption+N,E (Google Chrome)
Option+Shift+N,E (その他ブラウザ)
「新しいプロジェクト」ボタンをクリック

「新しいプロジェクト」ボタンをクリックします。

名前を変更をクリック

「名前を変更」をクリックします。

名前を変更します

「プロジェクトタイトル(例:行をコピーして挿入)」を入力し、②「名前を変更」ボタンをクリックします。

下記のスクリプトをコピーして貼り付ける

下記のスクリプトをコピーして貼り付けます。

関数内で行を指定してコピーし、自動的に挿入する関数「COPYROW 行の名前(例:2) 」を追加するスクリプトです。

function copyAndInsertRow(rowNumber) {
  // 開いているスプレッドシートとアクティブシートを取得
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  
  // コピーする行の内容を取得
  var range = sheet.getRange(rowNumber, 1, 1, sheet.getLastColumn());
  var values = range.getValues();
  
  // 新しい行を追加し、コピーした内容を貼り付け
  var currentRow = range.getLastRow();
  sheet.insertRowAfter(currentRow);
  sheet.getRange(currentRow + 1, 1, 1, values[0].length).setValues(values);
}

function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  var cell = e.range;
  
  // セルの内容をチェック
  var cellValue = cell.getValue();
  
  // 関数が 'COPYROW' で始まる場合
  if (typeof cellValue === 'string' && cellValue.startsWith('COPYROW')) {
    var parts = cellValue.split(' ');
    if (parts.length === 2) {
      var rowNumber = parseInt(parts[1], 10);
      if (!isNaN(rowNumber)) {
        copyAndInsertRow(rowNumber);
        // 関数を空にする
        cell.setValue('');
      }
    }
  }
}
「プロジェクトを保存」ボタンをクリック

「プロジェクトを保存」ボタンをクリックします。

トリガーをクリック

左にあるトリガーをクリックします。

「トリガーを追加」ボタンをクリック

「トリガーを追加」ボタンをクリックします。

トリガーを設定し保存します

「onEdit」、②「Head」、③「スプレッドシートから」、④「編集時」とそれぞれ選択して、⑤「保存」ボタンをクリックします。

空白のセルを選択

シートに戻り、空白のセルを選択します。

「COPYROW 行の名前(例:2) 」と入力してEnterキーを押す

「COPYROW 行の名前(例:2) 」と入力してEnterキーを押します。

行がコピーされ自動的に挿入(追加)される

指定した行がコピーされ自動的に挿入(追加)されました。