Google apps script 使用setFormulas时,I get error找不到函数错误“;对象函数getFontColor(){/**/};
我正在尝试创建一个脚本,它可以复制工作表的长度(在我研究时发现的其他SO帖子的背面缝合在一起): 当我运行此函数时,我得到:Google apps script 使用setFormulas时,I get error找不到函数错误“;对象函数getFontColor(){/**/};,google-apps-script,Google Apps Script,我正在尝试创建一个脚本,它可以复制工作表的长度(在我研究时发现的其他SO帖子的背面缝合在一起): 当我运行此函数时,我得到: TypeError: Cannot find function setFormulas in object function getFontColor() {/* */}.Dismiss 我所希望/期望的是将C6:I6中的所有公式复制到从C7开始的每一行中,沿着工作表的长度 该函数一次只适用于一行。所以,如果我将目标设置为C7:I7,并去掉for循环,它就会工作 为什么
TypeError: Cannot find function setFormulas in object function getFontColor() {/* */}.Dismiss
我所希望/期望的是将C6:I6中的所有公式复制到从C7开始的每一行中,沿着工作表的长度
该函数一次只适用于一行。所以,如果我将目标设置为C7:I7,并去掉for循环,它就会工作
也许可以试试这样:
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()
目标是对象而不是数组。并且该对象没有名为“1”的属性。查看官方文档了解如何使用范围。感谢您的回答。我已经尝试过了,但它似乎导致了工作表运行太慢,以至于无法使用。可以因为工作表仍在加载,所以不能真正判断它是否工作。顺便问一下,为什么我的原始脚本在复制到一行时工作?为什么我不能循环遍历范围内的每一行?好的,单张加载。它起作用了!不知道flush是做什么的,在文档中读一点,但我不明白?为什么需要它?为什么onOpen不够?flush()
应用所有挂起的电子表格更改。无论发生什么情况,挂起的更改都将在某个时刻应用。因此,从这个意义上说,它不是“需要的”。但是,如果要运行更多的代码,并且希望在代码运行时查看公式结果,则需要使用flush()
。如果电子表格正在计算数千行公式,则速度会非常慢。我永远不会将公式复制到没有数据的行,这只是浪费时间。如果你有那么多数据,使用电子表格将会非常“慢”。一切都是相对的。与手动操作相比,速度非常快。:)好的,谢谢你的反馈。我将只考虑在A列中有数据的情况下复制公式,否则,正如你所说的,沿着工作表的长度会有很多浪费。
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();