【问题标题】:How to change Topic names Classroom.Courses.Topics.patch()如何更改主题名称 Classroom.Courses.Topics.patch()
【发布时间】:2020-07-07 23:58:50
【问题描述】:

我正在使用 Google Apps 脚本更改多个 Google 课堂中的几个主题的名称。我使用Classroom.Courses.Topics.patch() 仅更改主题的“名称”值,但当我查看教室时,我的脚本没有任何更改。

这是一个示例:我有两个教室(课程 ID 为“100000000000”和“100000000001”)。在每个教室中,我有三个主题(主题名称“topic1”、“topic2”和“topic3”)。我想在两个教室中将前两个主题的名称分别更改为“newtopic1”和“newtopic2”。

我怀疑我做更新掩码的方式可能有问题,但我已经尝试重新排序,但我仍然无法让它去......也可能是我的嵌套循环?

function updateTopicNames() {
  var courseIds = ['100000000000','100000000001'];
  var topicNamesOld = ['topic1','topic2'];
  var topicNamesNew = ['newtopic1', 'newtopic2'];
  
  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 < topicObj.length; j++) {
      
      for (var k = 0; k < topicNamesNew.length; k++) {
        var topicId = topicObj[topicNamesOld[j]];
        var newName = {'name':topicNamesNew[k]};
        var extra =  {'updateMask':'name'};
        var exec = Classroom.Courses.Topics.patch(newName, topicId, courseIds[i], extra);
      }
    }
  }
}

我查看了courses.topics.patch API,但没有更新掩码实现的示例可供我推断。

我尝试从其他 .patch() 事物的代码引导:StudentSubmissions.Patch UpdateMask ErrorHow to change course owner using Classroom.Courses.patch(),但是当我尝试将这些代码转换为 Topics.patch() 时,有些东西不起作用。

【问题讨论】:

    标签: google-apps-script google-classroom


    【解决方案1】:

    我相信你的情况如下。

    • topicNamesOld的索引对应topicNamesNew的索引。

    修改点:

    • 在您的脚本中,topicObj 不是一个数组。所以你不需要使用 for 循环。

    当这反映到你的脚本中时,它变成如下。

    修改脚本:

    function updateTopicNames() {
      var courseIds = ['100000000000','100000000001'];
      var topicNamesOld = ['topic1','topic2'];
      var topicNamesNew = ['newtopic1', 'newtopic2'];
      
      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 k = 0; k < topicNamesNew.length; k++) {
          var topicId = topicObj[topicNamesOld[k]];
          var newName = {'name': topicNamesNew[k]};
          var extra =  {'updateMask':'name'};
          var exec = Classroom.Courses.Topics.patch(newName, courseIds[i], topicId, extra);
        }
      }
    }
    

    注意:

    • 在这种情况下,似乎可以更新使用相同 GAS 项目创建的主题。例如,似乎无法更新其他客户端创建的主题。这似乎是当前的规范。请注意这一点。

    参考:

    【讨论】:

      猜你喜欢
      • 2016-05-10
      • 1970-01-01
      • 2016-10-18
      • 2020-09-02
      • 1970-01-01
      • 1970-01-01
      • 2020-04-18
      • 1970-01-01
      • 2021-10-11
      相关资源
      最近更新 更多