Arrays 变量未定义导致';找不到具有给定ID的项目…';

Arrays 变量未定义导致';找不到具有给定ID的项目…';,arrays,loops,google-apps-script,directory,Arrays,Loops,Google Apps Script,Directory,**更新:样本谷歌表附上 目标是: 教师1文件夹->课时1天1文件夹->学生a文件夹 教师2文件夹->第3节第2天文件夹->学生a文件夹 我已经在这段代码上工作了好几个星期,它总是给我同样的错误。我试图为一个有两个不同老师的学生创建两个不同的文件夹。第一个是完美地在正确的地方创建的,但第二个却不断崩溃。它表示我的变量resourcePeriodFolder2和secondResourceTeacherName未定义,这导致最后一个变量resourceFolderID2也未定义 任何帮助都将不胜感

**更新:样本谷歌表附上

目标是: 教师1文件夹->课时1天1文件夹->学生a文件夹 教师2文件夹->第3节第2天文件夹->学生a文件夹

我已经在这段代码上工作了好几个星期,它总是给我同样的错误。我试图为一个有两个不同老师的学生创建两个不同的文件夹。第一个是完美地在正确的地方创建的,但第二个却不断崩溃。它表示我的变量resourcePeriodFolder2和secondResourceTeacherName未定义,这导致最后一个变量resourceFolderID2也未定义

任何帮助都将不胜感激

非常感谢

function createOneFolder() {

var studentFolderList = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Student Folders");
var teacherList = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Teacher Name and Folder List");

// Open the sheet used
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Student Folders");

var rowId = 3;
var rowIdTeacher = teacherList.getLastRow();

var studentFolderListArray = studentFolderList.getRange("A2:J").getValues();
var teacherFolderListArray = teacherList.getRange("A2:L").getValues();

var teacherName = teacherList.getRange("A" + rowId).getValues();

// get teacher name from student list
var firstStudentPeriod = studentFolderList.getRange("E" + rowId).getValues();
var firstTeacherNameOnStudentList = studentFolderList.getRange("F" + rowId).getValues();

// run loop to get teacher name from list  
for (var k=1; k<=rowIdTeacher; k++) {
  if (firstTeacherNameOnStudentList == teacherFolderListArray[k][0]) {
    var firstResourceTeacherName = teacherFolderListArray[k][0];     
    var resourcePeriodFolder1 = teacherFolderListArray[k][7]; 
  }; 

break;
}

// create folder for one student.
var resourceFolder = sheet.getRange("C" + rowId).getValue() + ", " + sheet.getRange("B" + rowId).getValue() + " ..... grade " + sheet.getRange("D" + rowId).getValue(); 
var resourceFolderID = DriveApp.getFolderById(resourcePeriodFolder1).createFolder(resourceFolder).getId();
sheet.getRange("G" + rowId).setValue(resourceFolderID);   

// get second teacher name from student list
var secondTeacherNameOnStudentList = studentFolderList.getRange("I" + rowId).getValues();
var secondStudentPeriod = studentFolderList.getRange("H" + rowId).getValues();

for (var h=1; h<=rowIdTeacher; h++) {  // Problem somewhere in here.
  if (secondTeacherNameOnStudentList === teacherFolderListArray[h][0]) {
    Logger.log('It works!  Victory!!!!')
    var resourcePeriodFolder2 = teacherFolderListArray[h][9]; // *****undefined even though value is in spreadsheet*****
    var secondResourceTeacherName = teacherFolderListArray[h][0]; // ***undefined even though value is in spreadsheet***           
  };

break;   
}

// create a second resource folder for same student.

var resourceFolder2 = sheet.getRange("C" + rowId).getValue() + ", " + sheet.getRange("B" + rowId).getValue() + " ..... grade " + sheet.getRange("D" + rowId).getValue(); 
var resourceFolderID2 = DriveApp.getFolderById(resourcePeriodFolder2).createFolder(resourceFolder2).getId();  **//CRASHES HERE**
sheet.getRange("J" + rowId).setValue(resourceFolderID2);

}
函数createOneFolder(){
var studentFolderList=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“学生文件夹”);
var teacherList=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“教师姓名和文件夹列表”);
//打开所用的纸张
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“学生文件夹”);
var-rowId=3;
var rowidtheer=teacherList.getLastRow();
var studentFolderListArray=studentFolderList.getRange(“A2:J”).getValues();
var teacherFolderListArray=teacherList.getRange(“A2:L”).getValues();
var teacherName=teacherList.getRange(“A”+rowId).getValues();
//从学生列表中获取教师姓名
var firstStudentPeriod=studentFolderList.getRange(“E”+rowId).getValues();
var firstTeacherNameOnStudentList=studentFolderList.getRange(“F”+rowId).getValues();
//运行循环以从列表中获取教师姓名

对于(var k=1;k可能一个示例电子表格会有所帮助,但引用不应该是从学生到包含教师姓名的单元格,而不是创建一个循环来查找任何内容吗?
您应该已经知道数据存在的位置,可以直接引用它,或者这个电子表格在不断变化吗?

为什么要在索引1处的javascript数组上启动循环?我从1开始,因为行0是不需要查看的列标题。我应该启动计数器st 0吗?我还认为我应该在找到匹配项时重新执行循环是否冗余?查看break语句的位置
var-resourcePeriodFolder1=teacherFolderListArray[k][7];
var-resourcePeriodFolder2=teacherFolderListArray[h][9]
我会猜到它们会在同一列上。但它们不是。我认为你的break语句放错了位置,或者它们完全不是必需的。
var resourceFolder=sheet.getRange(“C”+rowId.getValue()+”,“+sheet.getRange(“B”+rowId.getValue()+“…grade”+sheet.getRange(“D”+rowId.getValue());
var resourceFolder2=sheet.getRange(“C”+rowId).getValue()+”,“+sheet.getRange”(“B”+rowId).getValue()+“…grade”+sheet.getRange(“D”+rowId).getValue()
是完全相同的,因为
rowId
没有改变。嗨,随着更多学生的加入,它会改变。随着更多教师的加入,它也会改变。我正试图让它与一个学生输入一起工作,使用两个不同的教师。一旦我开始工作,我可以添加更多。目标是:教师1,第1天1节文件夹-学生a文件夹教学r 2,第3期第2天文件夹-学生a文件夹