Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.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 range.copyTo不作为例外应用程序脚本工作_Google Apps Script - Fatal编程技术网

Google apps script range.copyTo不作为例外应用程序脚本工作

Google apps script range.copyTo不作为例外应用程序脚本工作,google-apps-script,Google Apps Script,当我使用range.copyTo()方法将范围从一个电子表格复制到另一个电子表格时,我通常会在指定目标范围时使用sheet.getLastRow()+1。例如: var oldRange = sheet.getRange(1, 1, 1, sheet.getLastColumn()); var newRange = destSheet.getRange(destSheet.getLastRow()+1, 1, 1, sheet.getLastColumn()); 如果destSheet底

当我使用
range.copyTo(
)方法将范围从一个电子表格复制到另一个电子表格时,我通常会在指定目标范围时使用
sheet.getLastRow()+1
。例如:

 var oldRange = sheet.getRange(1, 1, 1, sheet.getLastColumn());

 var newRange = destSheet.getRange(destSheet.getLastRow()+1, 1, 1, sheet.getLastColumn());
如果destSheet底部没有任何附加行或“空白”行,则
range.copyTo()
方法不会复制数据,也不会抛出错误消息。如果使用相同的逻辑并使用
.getValues()
.setValues()
,则新行将自动添加到destSheet

我希望
range.copyTo()
在需要时也能创建额外的行。这是一个例外还是一个错误?

如果在newRange语句中添加.setValue(“”),您将看到一条错误消息,并且更多的行将自动添加到目标工作表,数据将被复制。 请注意,您不应该定义整个dest.range,只有左上角的单元格相关,如中所述

像这样:

  var newRange = sh.getRange(ss.getLastRow()+1, 1).setValue('');
  oldRange.copyTo(newRange)
无论如何,由于出现错误消息,这并不是最好的解决方法(很抱歉,服务器遇到错误。请按“确定”刷新工作表)。我想你可以合理地认为这是一个bug,你可以在这个

上提出一个问题。 编辑:实际上有一个很好的解决方法,我没有立即想到:你可以在copyTo()之前使用
insertRowAfter(ss.getLastRow())
,一切正常。 例如:

  var oldRange = sh.getRange(1, 1, 1, ss.getLastColumn());
  var newRange = sh.getRange(ss.getLastRow()+1, 1);
  ss.insertRowAfter(ss.getLastRow())
  oldRange.copyTo(newRange)
function copyToTest() {
  var oldRange = sh.getRange(1, 1, 5, ss.getLastColumn());// 5 rows in this example
  var newRange = sh.getRange(ss.getLastRow()+1, 1);
  for(n=0;n<oldRange.getLastRow();++n){ss.insertRowAfter(ss.getLastRow())}
  oldRange.copyTo(newRange)
}
当然,如果需要超过1行,请根据需要重复,如本例所示:

  var oldRange = sh.getRange(1, 1, 1, ss.getLastColumn());
  var newRange = sh.getRange(ss.getLastRow()+1, 1);
  ss.insertRowAfter(ss.getLastRow())
  oldRange.copyTo(newRange)
function copyToTest() {
  var oldRange = sh.getRange(1, 1, 5, ss.getLastColumn());// 5 rows in this example
  var newRange = sh.getRange(ss.getLastRow()+1, 1);
  for(n=0;n<oldRange.getLastRow();++n){ss.insertRowAfter(ss.getLastRow())}
  oldRange.copyTo(newRange)
}
函数copytost(){
var oldRange=sh.getRange(1,1,5,ss.getLastColumn());//本例中为5行
var newRange=sh.getRange(ss.getLastRow()+1,1);
对于(n=0;n如果在newRange语句中添加.setValue(“”),您将看到一条错误消息更多行将自动添加到目标工作表,并且将复制数据。
请注意,您不应该定义整个dest.range,只有左上角的单元格相关,如中所述

像这样:

  var newRange = sh.getRange(ss.getLastRow()+1, 1).setValue('');
  oldRange.copyTo(newRange)

无论如何,这不是最好的解决办法,因为出错信息(抱歉)。服务器遇到了错误。请按“OK”刷新该页。我想可以合理地认为这是一个bug,您可以在这个

上提出一个问题。 编辑:实际上有一个很好的解决方法,我没有立即想到:你可以在copyTo()之前使用
insertRowAfter(ss.getLastRow())
,一切正常。 例如:

  var oldRange = sh.getRange(1, 1, 1, ss.getLastColumn());
  var newRange = sh.getRange(ss.getLastRow()+1, 1);
  ss.insertRowAfter(ss.getLastRow())
  oldRange.copyTo(newRange)
function copyToTest() {
  var oldRange = sh.getRange(1, 1, 5, ss.getLastColumn());// 5 rows in this example
  var newRange = sh.getRange(ss.getLastRow()+1, 1);
  for(n=0;n<oldRange.getLastRow();++n){ss.insertRowAfter(ss.getLastRow())}
  oldRange.copyTo(newRange)
}
当然,如果需要超过1行,请根据需要重复,如本例所示:

  var oldRange = sh.getRange(1, 1, 1, ss.getLastColumn());
  var newRange = sh.getRange(ss.getLastRow()+1, 1);
  ss.insertRowAfter(ss.getLastRow())
  oldRange.copyTo(newRange)
function copyToTest() {
  var oldRange = sh.getRange(1, 1, 5, ss.getLastColumn());// 5 rows in this example
  var newRange = sh.getRange(ss.getLastRow()+1, 1);
  for(n=0;n<oldRange.getLastRow();++n){ss.insertRowAfter(ss.getLastRow())}
  oldRange.copyTo(newRange)
}
函数copytost(){
var oldRange=sh.getRange(1,1,5,ss.getLastColumn());//本例中为5行
var newRange=sh.getRange(ss.getLastRow()+1,1);

对于(n=0;我确实使用您建议的链接将其作为bug进行了归档。在他们回复之前,我将使用insertRowAfter对其进行编码。感谢您的帮助。我使用您建议的链接将其作为bug进行了归档。在他们回复之前,我将使用insertRowAfter对其进行编码。感谢您的帮助。