使用脚本在Google表格(云端硬盘/文档)中复制相关公式

时间:2014-11-21 15:06:47

标签: google-apps-script google-sheets

我正在尝试创建一个脚本,在打开时将公式复制到数据的末尾。 显然,公式本身包含相对和绝对寻址,需要维护。

IE,一个公式可能如下:

=if($C2="no", "no", VLOOKUP(concatenate($A2,$B2,$C2),'v2'!$A$2:$CN,MATCH(H$1,'v2'!$B$1:$CN$1,0)+1,FALSE))

公式跨越多列,列数也可能随时间而变化。因此,无法为每列创建自定义操作。

这是我到目前为止所得到的:

var target_book = SpreadsheetApp.getActiveSpreadsheet();
var source_sheet = target_book.getSheetByName("most_recent");
var rows = source_sheet.getLastRow();
var cols = source_sheet.getLastColumn();
var formulas = source_sheet.getRange("C2:CI2").getFormulas();
source_sheet.getRange(3,3,rows -3, cols-2).setFormulas(formulas);

我尝试了getFormulas函数的变体。 1)如果我使用getFormulas或getFormulasR1C1,它会复制所有公式。然后它还将所有公式粘贴到每个目标单元格中​​。 2)如果我使用getFormula或getFormulaR1C1,它最终会从该范围复制第一个公式并将其粘贴到目标范围内的每个单元格中。enter code here

我有点不知所措,我只想做最基本的复制和粘贴,更新相对寻址。这有可能吗?

谢谢,

克里斯

1 个答案:

答案 0 :(得分:4)

您可能需要查看copyTo(),它将以与在电子表格中手动复制和粘贴相同的方式复制单元格(绝对和相对引用将得到尊重)。