موضوعات را مدیریت کنید

Topic برچسبی برای گروه بندی موارد جریان CourseWork و CourseWorkMaterial در یک دوره است. یک Topic معمولاً برای دسته بندی این موارد بر اساس شباهت استفاده می شود، مانند هفته ای که آیتم ها اختصاص داده شده اند یا موضوع آنها. کاربران می‌توانند به صورت بصری موارد جاری را در نمای Classwork UI Classroom سازماندهی و فیلتر کنند.

هر Topic توسط یک شناسه منحصر به فرد اختصاص داده شده توسط سرور شناسایی می شود. منبع Topic همچنین شامل موارد زیر است:

  • name : نام نمایش داده شده در Classroom UI
  • updateTime : زمانی که Topic آخرین به روز رسانی شده است
  • courseId : شناسه دوره ای که Topic با آن مرتبط است

یک موضوع ایجاد کنید

همانطور که در نمونه زیر نشان داده شده است، می توانید با استفاده از متد topics.create() یک Topic جدید در یک دوره ایجاد کنید:

جاوا

classroom/snippets/src/main/java/CreateTopic.java
Topic topic = null;
try {
  // Create the new Topic.
  Topic content = new Topic().setName("Semester 1");
  topic = service.courses().topics().create(courseId, content).execute();
  System.out.println("Topic id: " + topic.getTopicId() + "\n" + "Course id: " + courseId);
} catch (GoogleJsonResponseException e) {
  // TODO (developer) - handle error appropriately
  GoogleJsonError error = e.getDetails();
  if (error.getCode() == 404) {
    System.out.printf("The courseId does not exist: %s.\n", courseId);
  } else {
    throw e;
  }
} catch (Exception e) {
  throw e;
}
return topic;

پایتون

topic = {
    "name": 'Example Topic'
}
response = service.courses().topics().create(
  courseId=<course ID or alias>,
  body=topic).execute()
print('Topic created: ', response['name'])

فیلد name همیشه لازم است و باید یک رشته غیر خالی باشد. تمام فیلدهای دیگر اختیاری هستند.

بازیابی جزئیات موضوع

همانطور که در نمونه زیر نشان داده شده است، می توانید یک Topic خاص را با ID با متد topics.get() بازیابی کنید:

جاوا

classroom/snippets/src/main/java/GetTopic.java
Topic topic = null;
try {
  // Get the topic.
  topic = service.courses().topics().get(courseId, topicId).execute();
  System.out.printf("Topic '%s' found.\n", topic.getName());
} catch (GoogleJsonResponseException e) {
  // TODO (developer) - handle error appropriately
  GoogleJsonError error = e.getDetails();
  if (error.getCode() == 404) {
    System.out.printf("The courseId or topicId does not exist: %s, %s.\n", courseId, topicId);
  }
  throw e;
} catch (Exception e) {
  throw e;
}
return topic;

پایتون

response = service.courses().topics().get(
  courseId=<course ID or alias>,
  id=<topic ID>).execute()
print('{0} ({1})'.format(response['name'], response['topicId']))

همانطور که در نمونه زیر نشان داده شده است، از متد topics.list() برای بازیابی همه Topic در یک دوره استفاده کنید:

جاوا

classroom/snippets/src/main/java/ListTopics.java
List<Topic> topics = new ArrayList<>();
String pageToken = null;

try {
  do {
    ListTopicResponse response =
        service
            .courses()
            .topics()
            .list(courseId)
            .setPageSize(100)
            .setPageToken(pageToken)
            .execute();

    /* Ensure that the response is not null before retrieving data from it to avoid errors. */
    if (response.getTopic() != null) {
      topics.addAll(response.getTopic());
      pageToken = response.getNextPageToken();
    }
  } while (pageToken != null);

  if (topics.isEmpty()) {
    System.out.println("No topics found.");
  } else {
    for (Topic topic : topics) {
      System.out.printf("%s (%s)\n", topic.getName(), topic.getTopicId());
    }
  }
} catch (GoogleJsonResponseException e) {
  // TODO (developer) - handle error appropriately
  GoogleJsonError error = e.getDetails();
  if (error.getCode() == 404) {
    System.out.printf("The courseId does not exist: %s.\n", courseId);
  } else {
    throw e;
  }
} catch (Exception e) {
  throw e;
}
return topics;

پایتون

topics = []
page_token = None
while True:
    response = service.courses().topics().list(
        pageToken=page_token,
        pageSize=30,
        courseId=<course ID or alias>).execute()
    topics.extend(response.get('topic', []))
    page_token = response.get('nextPageToken', None)
    if not page_token:
        break
if not topics:
    print('No topics found.')
else:
    print('Topics:')
    for topic in topics:
        print('{0} ({1})'.format(topic['name'], topic['topicId']))

یک موضوع را به روز کنید

همانطور که در نمونه زیر نشان داده شده است، می توانید name Topic موجود را با متد topics.patch() به روز کنید:

جاوا

classroom/snippets/src/main/java/UpdateTopic.java
Topic topic = null;
try {
  // Retrieve the topic to update.
  Topic topicToUpdate = service.courses().topics().get(courseId, topicId).execute();

  // Update the name field for the topic retrieved.
  topicToUpdate.setName("Semester 2");

  /* Call the patch endpoint and set the updateMask query parameter to the field that needs to
  be updated. */
  topic =
      service
          .courses()
          .topics()
          .patch(courseId, topicId, topicToUpdate)
          .set("updateMask", "name")
          .execute();

  /* Prints the updated topic. */
  System.out.printf("Topic '%s' updated.\n", topic.getName());
} catch (GoogleJsonResponseException e) {
  // TODO(developer) - handle error appropriately
  GoogleJsonError error = e.getDetails();
  if (error.getCode() == 404) {
    System.out.printf("The courseId or topicId does not exist: %s, %s.\n", courseId, topicId);
  } else {
    throw e;
  }
} catch (Exception e) {
  throw e;
}
return topic;

پایتون

topic = {
  "name": "New Topic Name"
}
response = service.courses().topics().patch(
  courseId=<course ID or alias>,
  id=<topic ID>,
  updateMask="name",
  body=topic).execute()
print('{0} ({1})'.format(response['name'], response['topicId']))

فیلدهای Topic id و updateTime توسط سرور تولید می‌شوند و نمی‌توانند با API به‌روزرسانی شوند.

یک موضوع را حذف کنید

همانطور که در نمونه زیر نشان داده شده است، می توانید یک Topic موجود را با متد topics.delete() حذف کنید:

جاوا

classroom/snippets/src/main/java/DeleteTopic.java
try {
  service.courses().topics().delete(courseId, topicId).execute();
} catch (GoogleJsonResponseException e) {
  // TODO(developer) - handle error appropriately
  throw e;
} catch (Exception e) {
  throw e;
}