我正在尝试创建一个脚本,将公式缩小到表格的长度(在我研究的其他SO帖子的背面缝合在一起):
var originRange = ss.getSheetByName('data_prep').getRange('C6:I6');
var formulas = originRange.getFormulas();
var target = ss.getSheetByName('data_prep').getRange('C7:I');
for(i in target) {
target[i].setFormulas(formulas);
}
当我运行此功能时,我得到:
TypeError: Cannot find function setFormulas in object function getFontColor() {/* */}.Dismiss
我希望/期望的是C6中的所有公式:I6被复制到从表格开始沿着C7开始的每一行。
该功能一次只能用于一行。因此,如果我将目标设置为C7:I7并摆脱for循环就可以了。
答案 0 :(得分:0)
也许尝试这样的事情:
var ss= SpreadsheetApp.getActiveSpreadsheet();
var dataPrepSheet = ss.getSheetByName('data_prep')
var originRange = dataPrepSheet.getRange('C6:I6');
var everyRow = dataPrepSheet.getMaxRows().toString();
var target = dataPrepSheet.getRange('C7:I' + everyRow);
originRange.copyTo(target);
SpreadsheetApp.flush();
使用getMaxRows()
方法获取电子表格中的每一行,无论是否有内容。返回一个整数,因此将其转换为字符串,然后使用文本公式创建A1表示法。
然后,不要设置公式,请使用copyTo()