1
テーブルに行を追加し、上の行から既存の書式を保持するスクリプトを作成する必要があります。私は同じ行を追加し、上の行から既存の書式を維持するには、同じことをする2つの別々の関数を持っています。表は同じですが、スプレッドシート上の異なる場所にすぎません。行の追加と書式設定の維持 - Googleスプレッドシート
何らかの理由で私がスクリプトを実行すると、行37のどこに行5のセルが追加されているのですか。私はセル33の2番目の行を開始するように指定しましたが、それを追加しています。誰かが私が間違っていることを知っていますか?
すべてのヘルプは非常に
更新されたコードを評価されて
// global
var ss = SpreadsheetApp.getActive();
function onOpen() {
var menu = [{name:"Add New Last Row", functionName:"addRow"}];
ss.addMenu("Extra", menu);
}
function addRow() {
var s, data, rw;
s=SpreadsheetApp.getActiveSheet();
data=s.getDataRange().getValues();
for (rw in data) {
if (data[rw][6]=="Condition Description :") break;
}
s.insertRowBefore(Number(rw));
s.getRange(Number(rw), 4, 1, 2).merge();
s.getRange(Number(rw), 8).setFormula("=f"+Number(rw)+"*g"+Number(rw));
}
function addFirstRow() {
var firstRow= 15;
var sh = ss.getActiveSheet();
var lCol = sh.getLastColumn();
var range = sh.getRange(firstRow, 1, 1, lCol);
var formulas = range.getFormulas();
sh.insertRowsAfter(firstRow, 1);
sh.getRange(firstRow+1, 4, 1,2).mergeAcross();
sh.getRange(firstRow+1, 7, 1,2).mergeAcross();
newRange = sh.getRange(firstRow, 1, 1, lCol);
newRange.setFormulas(formulas);
sh.getRange(firstRow+1, 4, 1,2).mergeAcross();
sh.getRange(firstRow+1, 7, 1,2).mergeAcross();
}
function addSecondRow() {
var firstRow= 33;
var sh = ss.getActiveSheet();
var lCol = sh.getLastColumn();
var range = sh.getRange(firstRow, 1, 1, lCol);
var formulas = range.getFormulas();
sh.insertRowsAfter(firstRow, 1);
sh.getRange(firstRow+1, 4, 1,2).mergeAcross();
sh.getRange(firstRow+1, 7, 1,2).mergeAcross();
newRange = sh.getRange(firstRow, 1, 1, lCol);
newRange.setFormulas(formulas);
sh.getRange(firstRow+1, 4, 1,2).mergeAcross();
sh.getRange(firstRow+1, 7, 1,2).mergeAcross();
}
、私が持っている唯一の編集には、以下の 'newRange = sh.getRange(firstRowの+ 1、1、1であります、lCol); 'firstRowに変更 '+ 1'を記録します。ちょうど挿入した次の行に数式を追加すると仮定します。 –
また、最後に2つの冗長mergeAcross関数を失う可能性があります。 –
@JackBrown私は何が間違っているのかを見て、ありがとう!スクリプトを実行して33行目のすべてのデータを削除したときの最後の1つです。行からデータを削除してフォーマットを解除しないようにするにはどうすればよいですか? – colin