見積もり作業を効率化!Googleスプレッドシートでの行挿入とコピー処理
Googleスプレッドシートを使って見積もりを作成していると、どうしても繰り返しの作業に時間を取られてしまいますよね。
特に、行を挿入したときに、書式や関数、罫線などを手動でコピーするのはかなり面倒です。
そんな作業を少しでも楽にするために、Google Apps Script (GAS) を使って行挿入と同時に書式や関数、罫線を新しい行に自動的にコピーするスクリプトを作成しました。
スクリプトを作成する理由
見積もり作成において、行を挿入したいときは、必ずその行に書式、関数、罫線などをコピーする必要があります。
これを手動で毎回行うのは非常に時間がかかりますし、作業ミスも発生しやすいです。
そのため、これを自動化できれば、大幅に作業効率を向上させることができます。
作成したGoogle Apps Scriptのコード
以下のコードをGoogleスプレッドシートの「Apps Script」エディタに貼り付けることで、選択したセルの下に指定した数の行を挿入し、その行に書式や関数、罫線を自動的にコピーすることができます。
function 行挿入関数他含むCopy() {
// デフォルト値を1に設定
var numRows = Browser.inputBox('挿入する行数を入力してください(数値を入れない場合は 1 で処理)', Browser.Buttons.OK_CANCEL);
// キャンセルボタンが押された場合の処理
if (numRows === "") { // キャンセルが押された場合は numRows が空文字になる
numRows = 1; // 入力が無い場合は1を設定
}
// 入力が無効な場合(数値ではない場合や0以下の場合)エラーメッセージを表示して終了
numRows = parseInt(numRows, 10); // 数値として変換
if (isNaN(numRows) || numRows <= 0) {
return; // 処理終了
}
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var activeCell = sheet.getActiveCell();
var columnIndex = activeCell.getColumn();
var rowIndex = activeCell.getRow();
function 挿入してコピー(rowIdx) {
// A列からAD列までの範囲を選択
var sourceRange = sheet.getRange(rowIdx, 1, 1, 30); // 1行分の範囲を選択(A列からAD列まで)
// 1行だけ挿入
sheet.insertRowsAfter(rowIdx, 1);
// 挿入された行の範囲を指定
var targetRange = sheet.getRange(rowIdx + 1, 1, 1, 30); // 挿入された行の範囲
// 書式だけをコピー
sourceRange.copyTo(targetRange, {formatOnly: true});
// 関数をコピー(相対参照を保持)
for (var i = 1; i <= 30; i++) {
var sourceCell = sourceRange.getCell(1, i);
var targetCell = targetRange.getCell(1, i);
// 関数が含まれている場合、値ではなく式を設定
if (sourceCell.getFormula()) {
var formula = sourceCell.getFormula();
// 相対参照を維持するため、式を現在の行に合わせて調整
formula = formula.replace(/([A-Z]+)(\d+)/g, function(match, col, row) {
return col + (parseInt(row) - rowIdx + (rowIdx + 1));
});
targetCell.setFormula(formula);
}
}
return rowIdx + 1; // 挿入後の行番号を返す
}
// `numRows` の数だけ繰り返し処理
for (var i = 0; i < numRows; i++) {
rowIndex = 挿入してコピー(rowIndex);
}
// 次の処理のためにアクティブセルを当初のセルより一つ下にオフセット
sheet.setActiveCell(sheet.getRange(activeCell.getRow() + 1, activeCell.getColumn()));
}
実行手順
Googleスプレッドシートを開く。
拡張機能 → Apps Script を選択して、スクリプトエディタを開きます。
新しいスクリプトを作成し、上記のコードを貼り付けます。
スクリプトを保存して、実行します。
これで、どのセルを選んでいても、挿入したい行数を入力するだけで、自動的に書式や関数、罫線がコピーされるようになります。