Переменные не определены, в результате чего не найдено ни одного элемента с указанным идентификатором ... - PullRequest
0 голосов
/ 08 марта 2019

** Обновление: образец листа Google прилагается. https://docs.google.com/spreadsheets/d/196XWcynpe00rLpNRUR2wbq09KKLptEQfZAoMunKBMtw/edit#gid=1457586267

Цель: папка учитель 1 -> папка период 1 день -> папка учитель Папка учителя 2 -> папка периода 3 дня 2 -> папка ученика

Я работал над этим кодом уже несколько недель, и он постоянно выдает мне ту же ошибку. Я пытаюсь создать две разные папки для одного ученика, у которого есть два разных учителя. Первый создан идеально и в нужном месте, а второй продолжает падать. Он говорит, что мои переменные: 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);

}

1 Ответ

0 голосов
/ 09 марта 2019

Может быть, пример таблицы поможет, но не должна ли ссылка от ученика на ячейку с именем учителя, а не на создание цикла для поиска чего-либо?Вы уже должны знать, где существуют данные и могут ссылаться на них напрямую, или эта таблица постоянно меняется?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...