Javascript Google Sheets/Apps脚本将公式复制到新行
对这一点还是相当陌生的。我已经能够使用复选框在单独的选项卡上触发新行的创建。在此新选项卡上,有一列包含公式。创建新行时(在第一行之上),我希望在新行中使用公式。以下是我到目前为止的情况:Javascript Google Sheets/Apps脚本将公式复制到新行,javascript,google-apps-script,google-sheets,google-sheets-formula,Javascript,Google Apps Script,Google Sheets,Google Sheets Formula,对这一点还是相当陌生的。我已经能够使用复选框在单独的选项卡上触发新行的创建。在此新选项卡上,有一列包含公式。创建新行时(在第一行之上),我希望在新行中使用公式。以下是我到目前为止的情况: if(sheet.getSheetName() == CLIENTS) { var checkCell = ss.getActiveCell(); var checked = checkCell.getValue(); var clientNameCell = checkCell.o
if(sheet.getSheetName() == CLIENTS) {
var checkCell = ss.getActiveCell();
var checked = checkCell.getValue();
var clientNameCell = checkCell.offset(0,-8).getValue();
var clientType = checkCell.offset(0,-7).getValue();
var sessionChargeCell = checkCell.offset(0, -6).getValue();
var groupChargeCell = checkCell.offset(0,-5).getValue();
var softwareFee = checkCell.offset(0,-4).getValue();
var billFee = checkCell.offset (0,-3).getValue();
var targetSheet = ss.getSheetByName("Client Billing Projections");
var lCol = targetSheet.getLastColumn();
if (checkCell.getColumn() == NEWCLIENTCHECK && checked == true) {
var target = targetSheet.getRange(2, 1, 1, lCol);
var formulas = target.getFormulas();
targetSheet.insertRowBefore(2);
var newRow = targetSheet.getRange(2,1,2,lCol);
newRow.setFormulas(formulas);
}
}
我想我被卡住的地方是在targetSheet.insertRowBefore(2)行之后代码>。我认为这与我使用getFormulas和setFormulas有关,但我真的无法理解。这里没有语法错误。如您所见,我已经从我的第一张表(客户)中收集了值;我打算把它复制到另一个选项卡上,但我也必须把公式复制起来。任何帮助都将不胜感激
那里已经有很多工作代码了。这里您将看到的大部分内容可能在第222-238行之间。到目前为止,其他一切都有效。
- 运行脚本时,将在
客户计费预测表的第2行插入新行
- 您希望将公式放在插入行的“N”列中
如果我的理解是正确的,这次修改怎么样
修改点:
- 在脚本中,公式由
var-formulas=target.getFormulas()从var-target=targetSheet.getRange(2,1,1,lCol)检索代码>。这是包含一行的二维数组。使用newRow.setFormulas(formulas)
和var newRow=targetSheet.getRange(2,1,2,lCol)
放置检索到的公式。在本例中,公式
具有包含2行的二维数组。
- 我想你的问题可能是这个原因
修改脚本:
修改脚本时,请按以下方式修改
发件人:
致:
参考:
为了正确了解您的情况,您能否提供一份样本电子表格和脚本以复制您的问题?当然,请删除您的个人信息。请参考以尝试改进您的问题,并且请按照@Tanaike所说的,包括一份样本表,其中有您问题的副本。我添加了一个示例链接。删除信息感谢您回复并提供电子表格示例。从中,我提出了一个修改后的脚本作为答案。你能确认一下吗?如果我误解了你的问题,而这不是你想要的方向,我道歉。谢谢你,你做到了!我想我错过了一些简单的事情。我只是不知道那是什么。斯蒂芬·福尔茨:谢谢你的回答。我很高兴你的问题解决了。也谢谢你。
var newRow = targetSheet.getRange(2,1,2,lCol);
var newRow = targetSheet.getRange(2,1,1,lCol);