我需要编写一个脚本,该脚本将在表中添加行并保留上面行的现有格式。我有两个单独的函数可以执行相同的操作,即添加一行并保留上面行的现有格式。这些表格是相同的,只是电子表格上的位置不同。
由于某种原因,当我运行脚本时,第二个表在第 37 行中应在的位置下方添加了第 5 行单元格。我指定在单元格 33 中开始第二行,但由于某种原因,当我添加第二行时它正在添加它。有人知道我可能做错了什么吗?
非常感谢任何帮助
更新了代码
// 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();
}
最佳答案
您的函数应如下所示:
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, 1, lCol);
newRange.setFormulas(formulas);
}
就像我在评论中提到的,这是不正确的语法
newRange = sh.getRange(firstRow, 1, 1, lCol);
因为它将选择您刚刚插入的行上方的行。 选择刚刚添加的行的正确方法是:
newRange = sh.getRange(firstRow+1, 1, 1, lCol);
关于javascript - 添加行并保持格式 - Google 表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43807767/