所以,我是google脚本/ javascript的新手,我想知道如何从一个单元格中获取公式并将其应用于第二个单元格。原始公式引用第三个单元格,因此我希望粘贴的单元格具有新公式,其中参考单元格相对于新定位。 (就像我在电子表格GUI上使用复制和粘贴一样。)
function myFunction() {
//Set Spreadsheet "Form Responses 1"
var ss1 = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
//Set Spreadsheet "Gant"
var ss3 = SpreadsheetApp.getActiveSpreadsheet().getSheets()[1];
//Get Last row with value
var InputRange = ss1.getRange("A1:A").getValues();
var InputLast = InputRange.filter(String).length;
//Get Formula which is to be applied to last form entry
var sourcerange = ss1.getRange(1, 12, 1, 3);
var sourceformula = sourcerange.getFormula();
var outputrange = ss1.getRange(1,12,1,3).offset(InputLast - 1, 0);
outputrange.setFormula(sourceformula);
}
所以如果原始公式是
=vlookup(A1, B;C,2,false)
新单元格应该是
=vlookup(A4, B;C,2,false)
答案 0 :(得分:1)
我发现.copyTo()就是解决这个问题的原因
如果有人想知道,这是链接:https://developers.google.com/apps-script/reference/spreadsheet/range#copyTo(Range)
答案 1 :(得分:0)
.copyTo()
适用于OP的情况。但是如果你在一个范围内循环,你可能想要:
var sourceFormulas = sourceRange.getFormulasR1C1();
...
outputRange.setFormulasR1C1(sourceFormulas);
这样你只需要进行两次API调用;一次在循环之前,一次之后。它比每次循环迭代调用API .copyTo()更快 。