Exception 用于调试。你上课了。还有堆栈驱动程序日志。@Aerials-很好的提示只需注意,使用Logger类现在几乎没有用,请改用控制台。优点-更多与浏览器兼容的代码记录器由于它通过管道传输到Stackdriver,因此加载日志的速度太慢,无法真正使用。感谢您的更正

Exception 用于调试。你上课了。还有堆栈驱动程序日志。@Aerials-很好的提示只需注意,使用Logger类现在几乎没有用,请改用控制台。优点-更多与浏览器兼容的代码记录器由于它通过管道传输到Stackdriver,因此加载日志的速度太慢,无法真正使用。感谢您的更正,exception,google-apps-script,google-sheets,google-drive-api,Exception,Google Apps Script,Google Sheets,Google Drive Api,用于调试。你上课了。还有堆栈驱动程序日志。@Aerials-很好的提示只需注意,使用Logger类现在几乎没有用,请改用控制台。优点-更多与浏览器兼容的代码记录器由于它通过管道传输到Stackdriver,因此加载日志的速度太慢,无法真正使用。感谢您的更正。可能是个愚蠢的问题,但问题是:我写过:var FileID=AllFileID_sheet.getRange(“B2:B10”).getValues();我已将getRange下的列指定为B2:B10。这难道不意味着getValues将获得行



用于调试。你上课了。还有堆栈驱动程序日志。@Aerials-很好的提示只需注意,使用
Logger
类现在几乎没有用,请改用
控制台
。优点-更多与浏览器兼容的代码<代码>记录器由于它通过管道传输到Stackdriver,因此加载日志的速度太慢,无法真正使用。感谢您的更正。可能是个愚蠢的问题,但问题是:我写过:var FileID=AllFileID_sheet.getRange(“B2:B10”).getValues();我已将getRange下的列指定为B2:B10。这难道不意味着getValues将获得行,并且我通过[I]访问该值吗?另外,我的数据文件中有破折号('-'),我不希望脚本在遇到破折号时继续运行。因此,if FileID!="-". 有更好的处理方法吗?@NarenSuri-你应该阅读文档-正如所说的,它返回一个内存中的值数组,它与“获取行”无关-你看,当你使用索引访问值时,你只会深入一个层次。如果一个数组是多级数组,则必须单独访问每个数组。例如:破折号-条件没有问题,问题在于
FileID
变量。你期望它包含一个列中的值列表,但实际上它包含一个行列表,而行列表又包含一个值列表。我看你有一个假设,将范围限制到一列只会得到该列,但这不是程序的工作方式——它们非常愚蠢。你告诉脚本给你一个列表行,其中每一行都是一个列表(数组),只有一个项目,这就是它返回的内容。我知道我在那里做了什么。你抓住了我的假设。非常感谢,我确实了解了getValues()的功能,但并不像现在这样理解它是如何工作的。我不知道礼节是什么,但我可以留下这篇文章,在重新探讨这个问题之后,我可能会有任何进一步的问题吗?谢谢你的更正。可能是个愚蠢的问题,但问题是:我写过:var FileID=AllFileID_sheet.getRange(“B2:B10”).getValues();我已将getRange下的列指定为B2:B10。这难道不意味着getValues将获得行,并且我通过[I]访问该值吗?另外,我的数据文件中有破折号('-'),我不希望脚本在遇到破折号时继续运行。因此,if FileID!="-". 有更好的处理方法吗?@NarenSuri-你应该阅读文档-正如所说的,它返回一个内存中的值数组,它与“获取行”无关-你看,当你使用索引访问值时,你只会深入一个层次。如果一个数组是多级数组,则必须单独访问每个数组。例如:破折号-条件没有问题,问题在于
FileID
变量。你期望它包含一个列中的值列表,但实际上它包含一个行列表,而行列表又包含一个值列表。我看你有一个假设,将范围限制到一列只会得到该列,但这不是程序的工作方式——它们非常愚蠢。你告诉脚本给你一个列表行,其中每一行都是一个列表(数组),只有一个项目,这就是它返回的内容。我知道我在那里做了什么。你抓住了我的假设。非常感谢,我确实了解了getValues()的功能,但并不像现在这样理解它是如何工作的。我不知道礼节是什么,但我可以留下这个帖子,在重新探讨这个问题之后,我可能会有任何进一步的问题吗?很高兴你解决了这个问题!请在可能的情况下从答案中编辑回应部分(如果您愿意,请留下引文,因为大多数评论会在一段时间后被删除),或者这可能会被关闭为“非答案”。答案作为回应是不赞成的,但当你添加了修改过的代码和解释时,你应该没问题,只是记住,答案和论坛有点不同(顺便说一句,你的答案,因为你是新用户,进入了一个审查队列,接受同行审查)。再一次-欢迎来到SO,很高兴看到新来者真正想了解手头的问题和网站规则。我从你那里得到的回复非常迅速,非常有用!所以启用了它,我不想因为不遵守任何协议而自私。此外,我认为结束我的问题的方法是张贴答案或我自己的理解!我现在更清楚了,再次感谢OlegNaren,感谢您的反馈-如果您遵循SO的规则(诚然,可能有很多细微差别),您可能会有相同的体验。不要太担心引用别人——我们都是来帮忙的。你在理解上发布答案是正确的-这是鼓励的,谢谢你这么做-有人可能会从看到实现而不是通过推理阅读它发生的原因中受益-所以继续保持下去(请记住,自我回答往往会得到同行更多的审查)!很高兴你解决了!请在可能的情况下从答案中编辑回应部分(如果您愿意,请留下引文,因为大多数评论会在一段时间后被删除),或者这可能会被关闭为“非答案”。答案作为回应是不赞成的,但当你添加了修改过的代码和解释时,你应该没问题,只是记住,答案和论坛有点不同(顺便说一句,你的答案,因为你是新用户,进入了一个审查队列,接受同行审查)。再一次-欢迎来到SO,很高兴看到新来者真正想了解手头的问题和网站规则。我从你那里得到的回复非常迅速,非常有用!所以启用了它,我不想因为不遵守任何协议而自私。此外,我认为结束我的问题的方法是张贴答案或我自己的理解!我现在更清楚了,再次感谢OlegNaren,感谢您的反馈-如果您遵循SO的规则(诚然,可能有很多细微差别),您可能会有相同的体验。不要担心引用他人
function copyPasteValues()
{
  //Define destination archive folder
  var Destination = DriveApp.getFolderById("ID");

  //Open correct sheet in the Archiving Center file and get ID range
  var AllFileID_ss = SpreadsheetApp.openById("ID_2"); *------- no error on this one*
  var AllFileID_sheet = AllFileID_ss.getSheetByName("Sheets_to_be_archived");
  var FileID = AllFileID_sheet.getRange("B2:B10").getValues();

  //Select the correct file to archive and create a copy
  for (var i=0; i<FileID.length;i++)
  {
    if (FileID != "-")
    {
      var archfile = SpreadsheetApp.openById(FileID[i]); *------------ exception being thrown here (line 16)*
      var archcopy = DriveApp.getFileById(FileID[i]).makeCopy("Archive "+archfile.getName(), Destination);
      var copyId = archcopy.getId();
      var sheetNumber = archfile.getSheets().length;

      //Select correct sheets in copy, and paste values
      for (var j=0; j<sheetNumber;j++)
      {
        var values = archfile.getSheets()[j].getDataRange().getValues();
        SpreadsheetApp.openById(copyId).getSheets()[j].getRange(archfile.getSheets()[j].getDataRange().getA1Notation()).setValues(values);
      }    
    }
  }

  Browser.msgBox("Archiving is done");
}
var AllFileID = AllFileID_sheet.getRange("B2:B10").getValues();

  //Select the correct file to archive and create a copy
  for (var i=0; i<AllFileID.length;i++)
  {
    var FileID = AllFileID[i][0] *----this is the change to pick out the value from the array*
    if (FileID != "-")
    {
      var archfile = SpreadsheetApp.openById(FileID); *---works!*