Google apps script 模板函数上的getRange失败

Google apps script 模板函数上的getRange失败,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我正在用GoogleSheets编写一个项目管理工具。我有一个项目的模板,每次有人开始一个新项目时,它都会被复制和重命名。我有一个非常奇怪的bug,它的函数如下 首先,我对下面的格式表示歉意;无论我怎么尝试,我都无法在中间找到一行来进入代码格式,所以代码被分割成一半,中间有一条奇怪的线。我向你保证,这是谷歌应用程序中运行的全部功能 错误发生在中断之前的行中:“empArchive,getRange(archiveCurrRow,1,1,6).setValues(masterListTop.get

我正在用GoogleSheets编写一个项目管理工具。我有一个项目的模板,每次有人开始一个新项目时,它都会被复制和重命名。我有一个非常奇怪的bug,它的函数如下

首先,我对下面的格式表示歉意;无论我怎么尝试,我都无法在中间找到一行来进入代码格式,所以代码被分割成一半,中间有一条奇怪的线。我向你保证,这是谷歌应用程序中运行的全部功能

错误发生在中断之前的行中:“empArchive,getRange(archiveCurrRow,1,1,6).setValues(masterListTop.getRange(i,1,1,6).getValues())//归档项目”。当我第一次在一个新文件中运行它时,它停在这一行并显示一个错误,表示“getRange”没有定义。我在前面几行中添加了一些调用,以检查getRange实际上是为masterListTop和empArchive定义的,并且这些调用工作正常

我试着注释这一行,因为下面的一行几乎相同,脚本运行良好。我取消了这行的注释,脚本再次运行良好。然而,每次我从这个模板创建一个新文件时,我都会遇到这个错误。如果我把问题行注释掉,然后取消注释,它就会运行。显然,这不是一项切实可行的工作。有人知道为什么会这样吗

提前感谢您的帮助

 function onEdit(){
   var projectSheet = SpreadsheetApp.getActive().getSheets()[0];
   if((projectSheet.getRange(6,2).getValue()=="Completed")&&( projectSheet.getRange(9,9).getValue()!= "Completed")){     //find if project has been marked Completed
     var empList = SpreadsheetApp.openById("XXXXXXXXXXX").getSheets()[0];     //open list of employees
     var masterList = SpreadsheetApp.openById("XXXXXXXXXXX")     //open the master list
     var masterListTop = masterList.getSheets()[0]
     var i = 2;
     while(masterListTop.getRange(i,1).getValue() != projectSheet.getRange(1,2).getValue() && masterListTop.getRange(i,1).getValue() != "ZZZ"){     //find this project on the master list
       var currValue = masterListTop.getRange(i,1).getValue()
       i++
       }
     if(masterListTop.getRange(i,1).getValue() != "ZZZ"  && masterListTop.getRange(i,11).getValue() == "No"){     //if the project has not been archived, do the following
       var j = 2
       while(empList.getRange(j,3).getValue() != projectSheet.getRange(2,2).getValue()){     //find the project owner on the employee list
         j++
         }
       var empSheet = SpreadsheetApp.openByUrl(empList.getRange(j,5).getValue())     //open that employee's page
       var empArchive = empSheet.getSheets()[2];
       var empName = empArchive.getRange(1,1,1,1).getValue()
       var archiveCurrRow = empArchive.getLastRow()+1
       var projectName = masterListTop.getRange(i,1,1,1).getValue()
       empArchive,getRange(archiveCurrRow, 1, 1, 6).setValues(masterListTop.getRange(i,1,1,6).getValues())     //archive the project
 //above is the problem line
empArchive.getRange(archiveCurrRow,7,1,1).setValue(masterListTop.getRange(i,10,1,1).getValue())

       masterListTop.getRange(i,11).setValue("Yes")     //mark the project Archived
  }
     var m = 11
while(projectSheet.getRange(m,1).getValue() != ""){
  if(projectSheet.getRange(m,9).getValue() == "No"){     //find unarchived tasks in this project
     var n = 2
     while(empList.getRange(n,3).getValue() != projectSheet.getRange(m,2).getValue()){     //find the task owner on the employee list
       n++
       }
     empSheet = SpreadsheetApp.openByUrl(empList.getRange(n,5).getValue())     //open the task owner's page
     var empTaskArchive = empSheet.getSheets()[3]
     empTaskArchive.getRange(empTaskArchive.getLastRow()+1, 1, 1, 1).setValue(projectSheet.getRange(m,1).getValue())     //archive the task
     empTaskArchive.getRange(empTaskArchive.getLastRow(), 2, 1, 4).setValues(projectSheet.getRange(m, 3, 1, 4).getValues())
     empTaskArchive.getRange(empTaskArchive.getLastRow(), 6, 1, 1).setValue(masterListTop.getRange(i, 1).getValue())
     empTaskArchive.getRange(empTaskArchive.getLastRow(), 7, 1, 1).setValue(projectSheet.getRange(7, 2).getValue())
     empTaskArchive.getRange(empTaskArchive.getLastRow(), 8, 1, 1).setValue(masterListTop.getRange(i,10).getValue())
     projectSheet.getRange(m,9).setValue("Yes")     //mark the task Archived
       }
     m++
     }
   projectSheet.getRange(9,9).setValue("Completed")
   }
}

错误是由于以下代码中的键入错误造成的:

empArchive,getRange(archiveCurrRow, 1, 1, 6)
它应该有一个点(“.”),而不是逗号(“,”),就像这样


与谷歌应用程序脚本的电子表格应用程序服务不同。要“修复”代码格式中未显示的行,请使用标记,删除缩进。您可以尝试的其他方法是使用
。我认为应该报告这个格式化问题。关于主要问题,尝试使用最少的代码行重现这个问题。有关更多详细信息,请参阅。不确定这是错误源还是复制错误。但是这里有一个逗号“代码> EpPARCHIVE,GeTrange(AcGiviCurrRo,1, 1, 6)< /Calp> in应该是一个”。“在EMPARCHIVE之后,像这样的代码> EMPARCHIVEG.GeTrange(AcGiviCurrRo,1, 1, 6),并且您可能想考虑使用<代码> AppEng/AppEng>将一行添加到您的文档中。”JackBrown,那是错误!真不敢相信我居然没看见。我想这就是独自工作的问题所在;有时候你只需要第二双眼睛。谢谢大家的帮助!
empArchive.getRange(archiveCurrRow, 1, 1, 6)