Google apps script 如何在谷歌教室中按标题删除作业(作业)

Google apps script 如何在谷歌教室中按标题删除作业(作业),google-apps-script,google-classroom,Google Apps Script,Google Classroom,我有几门课程都有相同的主题,每门课程(作业)都有相同的标题。我正在尝试使用Apps脚本从每门课程的几个主题中删除这些作业。我希望能够使用教室.Courses.CourseWork.delete(),但到目前为止,我的代码什么都没做。没有错误-只是作业没有变化。我认为我的权限是有序的,因为这些是我使用相同的帐户/权限创建的工作分配 我的问题可能是我无法从作业的名称中获得作业ID。我不知道如何做到这一点,但我认为我的代码中可能缺少它 以下是我尝试过的: function deleteAssignme

我有几门课程都有相同的主题,每门课程(作业)都有相同的标题。我正在尝试使用Apps脚本从每门课程的几个主题中删除这些作业。我希望能够使用教室.Courses.CourseWork.delete(),但到目前为止,我的代码什么都没做。没有错误-只是作业没有变化。我认为我的权限是有序的,因为这些是我使用相同的帐户/权限创建的工作分配

我的问题可能是我无法从作业的名称中获得作业ID。我不知道如何做到这一点,但我认为我的代码中可能缺少它

以下是我尝试过的:

function deleteAssignments() {
  var courseIds = ['100000000000','100000000001','100000000002'];
  var topicNames = ['topic3','topic2','topic1'];
  for (var i = 0; i < courseIds.length; i++) {

    var topics = Classroom.Courses.Topics.list(courseIds[i]).topic;
    var topicObj = topics.reduce((o, e) => Object.assign(o, {[e.name]: e.topicId}), {});
    for (var j = 0; j < topicNames.length; j++) {

      var topicId = topicObj[topicNames[j]];

      var exec = Classroom.Courses.CourseWork.delete({
        title: "Example Assignment",
        topicId: topicId,
        workType: "ASSIGNMENT",
      }, courseIds[i]);
    }
  }
} 
函数deleteAssignments(){
var courseIds=['10000000000'、'100000000001'、'100000000002'];
变量topicNames=['topic3'、'topic2'、'topic1'];
对于(变量i=0;iObject.assign(o,{[e.name]:e.topicId}),{});
对于(var j=0;j
我查看了谷歌教室,但我认为我不太了解如何将我的代码作为一个整体来组织,以利用那里的信息,因为我没有任何背景知识/培训

我过去常常会想出我的代码,但我的代码不起作用,我也不知道哪里出了问题


我也查看了,但当我运行答案中的代码时,我的日志显示它正在加载,但它似乎从未完成。

在这个示例脚本中,通过搜索课程名称删除课程作业

示例脚本: 在使用此脚本之前


在此示例脚本中,通过搜索课程作业名称来删除课程作业

示例脚本: 在使用此脚本之前


我能问一下你的目标吗?您希望删除哪些课程作品或主题?顺便说一下,当您想要删除课程作业时,您可以使用
教室.Courses.CourseWork.remove(courseId,id)
的脚本。在这种情况下,ID是当然工作的唯一ID@Tanaike我正在尝试删除课程作业(保留主题)-我在一堆不同的主题中有相同标题的课程作业,我只想从其中一些主题中删除它。我想我在获取课程作业的唯一ID时遇到了问题,因此我可能无法删除它们。谢谢您的回复。我可以理解,你想删除使用谷歌应用程序脚本的课程作品。而且,我知道要删除课程作品,您需要通过搜索主题名称来删除课程作品。但是,主题有
courseId
topicId
name
updateTime
字段。而且课程工作似乎没有主题ID和名称。因此,我认为课程作业ID无法从主题名称中检索。这个怎么样?@Tanaike我正试图根据课程名称删除它。主题名称在那里,因为我需要使用它们来获取主题ID,以指示我希望从哪些主题中删除课程作业。我会更新这个问题,看看能不能说得更清楚。谢谢你的回答。当你有课程名称时,我认为课程名称可以删除课程名称。为此,我可以提出一个修改后的脚本。我可以问一下你的目标吗?您希望删除哪些课程作品或主题?顺便说一下,当您想要删除课程作业时,您可以使用
教室.Courses.CourseWork.remove(courseId,id)
的脚本。在这种情况下,ID是当然工作的唯一ID@Tanaike我正在尝试删除课程作业(保留主题)-我在一堆不同的主题中有相同标题的课程作业,我只想从其中一些主题中删除它。我想我在获取课程作业的唯一ID时遇到了问题,因此我可能无法删除它们。谢谢您的回复。我可以理解,你想删除使用谷歌应用程序脚本的课程作品。而且,我知道要删除课程作品,您需要通过搜索主题名称来删除课程作品。但是,主题有
courseId
topicId
name
updateTime
字段。而且课程工作似乎没有主题ID和名称。因此,我认为课程作业ID无法从主题名称中检索。这个怎么样?@Tanaike我正试图根据课程名称删除它。主题名称在那里,因为我需要使用它们来获取主题ID,以指示我希望从哪些主题中删除课程作业。我会更新这个问题,看看能不能说得更清楚。谢谢你的回答。当你有课程名称时,我认为课程名称可以删除课程名称。为此,我可以提出一个修改后的脚本。这个脚本似乎删除了一个作业。我在每门课程中都有许多相同作业的副本,我想把它们全部删除。“这可能吗?”莫伊谢谢你的回答。给您带来的不便,我深表歉意。从你的回答中,我在我的回答中又提出了一个示例脚本。你能确认一下吗?但在这种情况下,当存在相同的课程名称时,它们的所有课程都将被删除。所以当你使用这个时,请注意这个。这个似乎删除了一个作业。我在每门课程中都有许多相同作业的副本,我想把它们全部删除。“这可能吗?”莫伊谢谢你的回答。给您带来的不便,我深表歉意。从您的回复中,我又提出了一个示例脚本
function deleteCourseworks() {
  var courseIds = ['###courseId1###', '###courseId2###',,,];
  var courseworkNames = ["###coursework name1###", "###coursework name2###",,,];

  for (var i = 0; i < courseIds.length; i++) {
    var courseWorks = Classroom.Courses.CourseWork.list(courseIds[i], {courseWorkStates: "PUBLISHED"}).courseWork;
    var courseWorkObj = courseWorks.reduce((o, e) => Object.assign(o, {[e.title]: e.id}), {});
    for (var j = 0; j < courseworkNames.length; j++) {
      var courseWorkId = courseWorkObj[courseworkNames[j]];
      console.log(courseIds[i])
      console.log(courseWorkId)
      var exec = Classroom.Courses.CourseWork.remove(courseIds[i], courseWorkId);
    }
  }
}
function deleteCourseworks() {
  var courseIds = ['###courseId1###', '###courseId2###',,,];
  var courseworkNames = ["###coursework name1###", "###coursework name2###",,,];

  for (var i = 0; i < courseIds.length; i++) {
    var courseWorks = Classroom.Courses.CourseWork.list(courseIds[i], {courseWorkStates: "PUBLISHED"}).courseWork;
    var courseWorkObj = courseWorks.reduce((o, e) => Object.assign(o, {[e.title]: o[e.title] ? o[e.title].concat(e.id) : [e.id]}), {});
    for (var j = 0; j < courseworkNames.length; j++) {
      var courseWorkIds = courseWorkObj[courseworkNames[j]];
      if (courseWorkIds) {
        courseWorkIds.forEach(id => {
          var exec = Classroom.Courses.CourseWork.remove(courseIds[i], id);
        });
      }
    }
  }
}