Google Apps脚本仅列出特定日期后在Google课堂中的作业

时间:2019-01-28 14:30:16

标签: javascript datetime google-apps-script google-classroom

我有一个Google Apps脚本,可以在Google表格的域中提取并列出来自Google课堂的所有作业,但是现在我只需要在特定日期之后提取某些作业。我必须把日期或条件放错了,因为该数组的末尾仍然为空(而如果我用日期过滤器注释掉if条件,则代码可以很好地工作并列出所有赋值)。

另一个“不可见”问题是,在应用过滤器之前,for循环仍在遍历所有分配,这浪费了时间。想法是将for循环限制为仅从开始算起某个日期之后的赋值,而不是搜索所有内容,但是我不知道这是否可行。

代码在下面。

function listAssignmentsbyDate() {
 var s1 = SpreadsheetApp.getActiveSpreadsheet();
 var sh = s1.getSheetByName('LA');
 var response = Classroom.Courses.list();
 var courses = response.courses;
 var arr1 = []; var arr2 = []; var arr3 = []; var arr4 = [];

 var today = new Date(); 
 var oneWeekAgo = new Date(today.getTime() - 7 * 24 * 60 * 60 * 1000);  
 for (i = 0; i < courses.length; i++) {
  var course = courses[i];
  var ids = course.id;
  var title = course.name;
  var state = course.courseState;
  arr1.push([ids,title,state]);
 }

for (i = 0; i < arr1.length; i++) {
 if (arr1[i][2] !== 'ARCHIVED'){
  var list = arr1[i][0];
  var page = null, t = [];
  do {
   var tea = Classroom.Courses.CourseWork.list(list, {pageToken: page, pageSize: 100});
   page = tea.nextPageToken; var t = t.concat(tea.courseWork);
 } while (page);

 try {
        for (q = 0; q < t.length; q++) {
         var c = t[q];
         var name = arr1[i][1]; 
       // The line below is what is not working.
          if(oneWeekAgo < c.creationTime){
            var ti = c.title;
            var des = c.description;
            var st = c.state;
            var link = c.alternateLink;
            var typ = c.workType;
            var poi = c.maxPoints;
            var create = c.creationTime;
            var due = c.dueDate;
            var duet = c.dueTime;
            var cour = c.courseId;
            var ids = c.id;
            var user = c.creatorUserId;
            arr2.push([name,ti,des,st,link,typ,poi,create,due,duet,cour,ids]); 
            arr3.push(user);
          } 
        }
      } catch (e) {continue;}  

  }
 }
 for (r=0; r < arr3.length; r++){ 
   try {  
    var eu = arr3[r];
    var us = AdminDirectory.Users.get(eu).primaryEmail;
    arr4.push([us]);
   } catch(e){continue;}
 }
 sh.getRange(2, 2, arr4.length, arr5[0].length).setValues(arr4);
 sh.getRange(2, 3, arr2.length, arr2[0].length).setValues(arr2);
 s1.getSheetByName('CACHE').getRange('B1').setValue('');  
}

0 个答案:

没有答案