2017-04-14 62 views
0

我正在Google表格中编写项目管理工具。我有一个项目模板,每次有人开始一个新项目时都会被复制和重命名。我有一个非常奇怪的错误与以下功能。getRange在模板函数上失败

首先,我很抱歉下面的格式;无论我如何尝试,我都无法在中间找到一行代码格式,因此代码被中间的一条怪异线分成两半。我向你保证,这是在Google Apps中运行的所有功能之一。 (1),1(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") 
    } 
} 
+0

[tag:google-spreadsheet-api]与Google Apps脚本的SpreadsheetApp服务不同。要使用降价“修复”未在代码格式中显示的行,将删除缩进。你可以尝试的其他事情是使用''。我认为这个格式问题应该在[meta]上报告。 –

+0

关于主要问题,请尝试使用最少的代码行重现问题。有关更多详情,请参阅[mcve]。 –

+0

不确定这是错误还是复制错误的来源。但是这里有一个逗号'empArchive,getRange(archiveCurrRow,1,1,6)'应该是一个“。”在empArchive之后,就像'empArchive.getRange(archiveCurrRow,1,1,6)' –

回答

0

该错误是由于一个错字在下面的代码引起的:

empArchive,getRange(archiveCurrRow, 1, 1, 6) 

它应该有一个点(“‘)而不是逗号(’,”),像这样

empArchive.getRange(archiveCurrRow, 1, 1, 6)