Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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 填写前一行时自动添加行;这些行超出边界(第8行,文件“代码”)错误 我正在为一家视听公司创建一个建议书的中间人。生成器使用数据验证下拉列表从设备类型(音频、灯光、电气等)列表中进行选择。根据所选内容,以下数据验证单元格将下拉,其中包含该类型设备的子选项_Google Apps Script - Fatal编程技术网

Google apps script 填写前一行时自动添加行;这些行超出边界(第8行,文件“代码”)错误 我正在为一家视听公司创建一个建议书的中间人。生成器使用数据验证下拉列表从设备类型(音频、灯光、电气等)列表中进行选择。根据所选内容,以下数据验证单元格将下拉,其中包含该类型设备的子选项

Google apps script 填写前一行时自动添加行;这些行超出边界(第8行,文件“代码”)错误 我正在为一家视听公司创建一个建议书的中间人。生成器使用数据验证下拉列表从设备类型(音频、灯光、电气等)列表中进行选择。根据所选内容,以下数据验证单元格将下拉,其中包含该类型设备的子选项,google-apps-script,Google Apps Script,其中一些项目相当大,需要大量设备,其他项目则小得多。我想设置它,这样当一件设备被选中时,另一行被创建在它下面,并允许选择更多选项。。。另一种方法是手动插入一行并向下复制前一行的公式,或者预先填充一组可能被选择的行,这可能会有一组额外的行的风险(对于将被重复使用数百次的东西来说不是很好) 我尝试了下面的脚本,我希望它能在我正在填写的当前行(第40行)下面添加一行。 这个脚本一直给我“那些行超出边界(第8行,文件“代码”)错误 有什么想法吗 编辑:~~~~~~~~~~~~~~~~~~~~~~~~~

其中一些项目相当大,需要大量设备,其他项目则小得多。我想设置它,这样当一件设备被选中时,另一行被创建在它下面,并允许选择更多选项。。。另一种方法是手动插入一行并向下复制前一行的公式,或者预先填充一组可能被选择的行,这可能会有一组额外的行的风险(对于将被重复使用数百次的东西来说不是很好)

我尝试了下面的脚本,我希望它能在我正在填写的当前行(第40行)下面添加一行。

这个脚本一直给我“那些行超出边界(第8行,文件“代码”)错误

有什么想法吗

编辑:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

运行此脚本一次将在底部返回一个添加的行,但似乎每次运行它之后,添加的行数都会翻倍

第一次运行:添加1行 第二次运行:添加2行 第三次运行:添加4行 第4次运行:添加8行

这个脚本中是否有明显的原因导致了这种情况的发生


有两种方法可以在insertRowsAfter(后位,有多少)抛出该错误(请参阅):

  • 第一个参数是0

  • 第一个参数大于该工作表中存在的行数。(如果工作表甚至没有400行,则无法在第400行之后插入)

通过查看您的代码,很明显发生此错误是因为您的第一个参数大于工作表中的行数

  • 假设您的工作表中有120行,所有行都充满了数据

  • 由于工作表已满,numRows=120
    var numRows=rows.getNumRows();

  • 当您进行第一次循环迭代时,您将拥有
    sheet.insertRowsAfter(120+startRow,1);

  • 这导致脚本尝试在第160行之后插入一行,但该行甚至不存在(没有绑定)

我不确定我是否真的知道你的计划是什么,尤其是对于for循环。但是如果你想在那之后插入一行或N行,简单地说:

var startRow = 40;
  var sheet = SpreadsheetApp.getActiveSheet();
  var rows = sheet.getDataRange();
  var numRows = rows.getNumRows();

  sheet.insertRowsAfter(startRow , 1); //or any number N instead of 1

我只看到六行代码。请提供一个。查看电子表格示例可能也很有用。我刚刚编辑了OP以包含完整的代码和我所指内容的可视化示例。希望这能有所帮助!
var startRow = 40;
  var sheet = SpreadsheetApp.getActiveSheet();
  var rows = sheet.getDataRange();
  var numRows = rows.getNumRows();

  sheet.insertRowsAfter(startRow , 1); //or any number N instead of 1