Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 使用setFormulas时,I get error找不到函数错误“;对象函数getFontColor(){/**/};_Google Apps Script - Fatal编程技术网

Google apps script 使用setFormulas时,I get error找不到函数错误“;对象函数getFontColor(){/**/};

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循环,它就会工作 为什么

我正在尝试创建一个脚本,它可以复制工作表的长度(在我研究时发现的其他SO帖子的背面缝合在一起):

当我运行此函数时,我得到:

TypeError: Cannot find function setFormulas in object function getFontColor() {/* */}.Dismiss
我所希望/期望的是将C6:I6中的所有公式复制到从C7开始的每一行中,沿着工作表的长度

该函数一次只适用于一行。所以,如果我将目标设置为C7:I7,并去掉for循环,它就会工作

  • 为什么我会遇到这个getFont错误
  • 如何让脚本将C6:I6中的公式复制到整个工作表中
  • 作为2的替代方案,当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();
    
    使用
    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();