このような関数/式を持つセルを含むテーブルがあります:
新しい行を作成し、最後に使用した行の関数/式をコピーするスクリプトが必要です。 新しい行を作成するが、関数/式をコピーしないこのスクリプト を見つけました。手動で選択してコピーすることなく、Google Apps Scriptでこのフォーマットコピータスクを実装するにはどうすればよいですか?
以下のコードを使用して、式も通常の値としてコピーします。スプレッドシートメニューから[ツール]を選択して、コードを追加します。次に、スクリプトエディターを選択し、コードを追加します。必ず「バグ」ボタンを押して、スクリプトを認証してください。
// global
var ss = SpreadsheetApp.getActive();
function onOpen() {
var menu = [{name:"Add New Last Row", functionName:"addRow"}];
ss.addMenu("Extra", menu);
}
function addRow() {
var sh = ss.getActiveSheet(), lRow = sh.getLastRow();
var lCol = sh.getLastColumn(), range = sh.getRange(lRow,1,1,lCol);
sh.insertRowsAfter(lRow, 1);
range.copyTo(sh.getRange(lRow+1, 1, 1, lCol), {contentsOnly:false});
}
contentOnlyをfalse
に設定すると、標準コピーが生成されます。 true
に設定すると、値のみが貼り付けられます。あなたが見つけたスクリプト例は、値を貼り付けるだけではありません.....
サンプルファイルを作成しました:数式で行を追加
このArrayFormulaは、スクリプトを使用せずに同じことを実行できます。 D4に入力すると、その下の空のセルに自動的に引き継がれます。
ArrayFormula(vlookup(B4:B:tax_table!$A$2:$G$8;3;true))
注:「B4:B」とは、B4から列の終わりまでのすべてのセルを見るという意味です。
一方、ArrayFormulaは自身をその下のセルにコピーします。その下のセルが空であることを確認してください。
新しい行を最初(最初の行)に追加し、最初の行から数式をコピーする必要がある場合、getFormulas()
およびsetFormulas()
関数を使用して数式をコピーする必要があります。たとえば、スプレッドシートにヘッダーがある場合、firstRow
の値を2に変更できます。
function addFirstRow() {
var firstRow = 1;
var sh = ss.getActiveSheet();
var lCol = sh.getLastColumn();
var range = sh.getRange(firstRow, 1, 1, lCol);
var formulas = range.getFormulas();
sh.insertRowsAfter(1, 1);
newRange = sh.getRange(firstRow, 1, 1, lCol);
newRange.setFormulas(formulas);
}