مدیریت نگهبانان

یک منبع Guardian نشان دهنده کاربری است، مانند والدین، که اطلاعاتی در مورد دوره ها و کار دانش آموز دریافت می کند. سرپرست، که معمولاً عضو دامنه Classroom دانش‌آموز نیست، باید با استفاده از آدرس ایمیل خود دعوت شود تا قیم شود.

این دعوت یک منبع GuardianInvitation با وضعیت PENDING ایجاد می کند. سپس کاربر ایمیلی دریافت می کند که از او می خواهد دعوت را بپذیرد. اگر آدرس ایمیل با یک حساب Google مرتبط نباشد، از کاربر خواسته می شود تا قبل از پذیرش دعوت نامه، آن را ایجاد کند.

در حالی که حالت دعوتنامه در حال PENDING است، کاربر ممکن است دعوتنامه را بپذیرد، که یک منبع Guardian ایجاد می کند و GuardianInvitation را با حالت COMPLETED علامت گذاری می کند. اگر دعوتنامه منقضی شود، یا اگر یک کاربر مجاز دعوت را لغو کند (مثلاً با استفاده از روش PatchGuardianInvitation ) ممکن است یک دعوت COMPLETED شود. یک رابطه Guardian همچنین ممکن است توسط یک سرپرست، یک معلم کلاس، یا یک مدیر، با استفاده از رابط کاربری Classroom یا روش DeleteGuardian ، قطع شود.

چه کسی می تواند سرپرستان را مدیریت کند

جدول زیر اقداماتی را که می‌توان با توجه به محافظان انجام داد، با توجه به نوع کاربری که در حال حاضر احراز هویت شده است، توضیح می‌دهد:

جدول ACL های مرتبط با نگهبان بر اساس نوع کاربر

محدوده ها

سه حوزه وجود دارد که به شما امکان می دهد سرپرستان را مدیریت کنید:

اقدامات مشترک

این بخش برخی از اقدامات متداول نگهبان را که ممکن است بخواهید با استفاده از Google Classroom API انجام دهید، توضیح می‌دهد.

یک دعوت نامه نگهبان ایجاد کنید

مثال زیر نشان می دهد که چگونه می توانید با استفاده از متد userProfiles.guardianInvitations.create() یک دعوت نامه نگهبان ایجاد کنید:

جاوا

classroom/snippets/src/main/java/CreateGuardianInvitation.java
GuardianInvitation guardianInvitation = null;

/* Create a GuardianInvitation object with state set to PENDING. See
https://developers.google.com/classroom/reference/rest/v1/userProfiles.guardianInvitations#guardianinvitationstate
for other possible states of guardian invitations. */
GuardianInvitation content =
    new GuardianInvitation()
        .setStudentId(studentId)
        .setInvitedEmailAddress(guardianEmail)
        .setState("PENDING");
try {
  guardianInvitation =
      service.userProfiles().guardianInvitations().create(studentId, content).execute();

  System.out.printf("Invitation created: %s\n", guardianInvitation.getInvitationId());
} catch (GoogleJsonResponseException e) {
  // TODO (developer) - handle error appropriately
  GoogleJsonError error = e.getDetails();
  if (error.getCode() == 404) {
    System.out.printf("There is no record of studentId: %s", studentId);
  } else {
    throw e;
  }
} catch (Exception e) {
  throw e;
}
return guardianInvitation;

پایتون

guardianInvitation = {
  'invitedEmailAddress': 'guardian@gmail.com',
}
guardianInvitation = service.userProfiles().guardianInvitations().create(
                      studentId='student@mydomain.edu',
                          body=guardianInvitation).execute()
print("Invitation created with id: {0}".format(guardianInvitation.get('invitationId')))

نتیجه شامل یک شناسه اختصاص داده شده توسط سرور است که می تواند برای ارجاع به GuardianInvitation استفاده شود.

دعوت نامه سرپرست را لغو کنید

برای لغو یک دعوت، با فراخوانی متد userProfiles.guardianInvitations.patch() وضعیت دعوت را از PENDING به COMPLETE تغییر دهید. توجه داشته باشید که در حال حاضر این تنها راه حذف دعوت نامه است.

جاوا

classroom/snippets/src/main/java/CancelGuardianInvitation.java
GuardianInvitation guardianInvitation = null;

try {
  /* Change the state of the GuardianInvitation from PENDING to COMPLETE. See
  https://developers.google.com/classroom/reference/rest/v1/userProfiles.guardianInvitations#guardianinvitationstate
  for other possible states of guardian invitations. */
  GuardianInvitation content =
      service.userProfiles().guardianInvitations().get(studentId, invitationId).execute();
  content.setState("COMPLETE");

  guardianInvitation =
      service
          .userProfiles()
          .guardianInvitations()
          .patch(studentId, invitationId, content)
          .set("updateMask", "state")
          .execute();

  System.out.printf(
      "Invitation (%s) state set to %s\n.",
      guardianInvitation.getInvitationId(), guardianInvitation.getState());
} catch (GoogleJsonResponseException e) {
  // TODO (developer) - handle error appropriately
  GoogleJsonError error = e.getDetails();
  if (error.getCode() == 404) {
    System.out.printf(
        "There is no record of studentId (%s) or invitationId (%s).", studentId, invitationId);
  } else {
    throw e;
  }
} catch (Exception e) {
  throw e;
}
return guardianInvitation;

پایتون

guardian_invite = {
     'state': 'COMPLETE'
}
guardianInvitation = service.userProfiles().guardianInvitations().patch(
  studentId='student@mydomain.edu',
  invitationId=1234, # Replace with the invitation ID of the invitation you want to cancel
  updateMask='state',
  body=guardianInvitation).execute()

دعوت نامه های یک دانش آموز خاص را فهرست کنید

با استفاده از متد userProfiles.guardianInvitations.list() می‌توانید فهرستی از تمام دعوت‌نامه‌هایی که برای یک دانش‌آموز خاص ارسال شده است را دریافت کنید:

جاوا

classroom/snippets/src/main/java/ListGuardianInvitationsByStudent.java
List<GuardianInvitation> guardianInvitations = new ArrayList<>();
String pageToken = null;

try {
  do {
    ListGuardianInvitationsResponse response =
        service
            .userProfiles()
            .guardianInvitations()
            .list(studentId)
            .setPageToken(pageToken)
            .execute();

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

  if (guardianInvitations.isEmpty()) {
    System.out.println("No guardian invitations found.");
  } else {
    for (GuardianInvitation invitation : guardianInvitations) {
      System.out.printf("Guardian invitation id: %s\n", invitation.getInvitationId());
    }
  }
} catch (GoogleJsonResponseException e) {
  GoogleJsonError error = e.getDetails();
  if (error.getCode() == 404) {
    System.out.printf("There is no record of studentId (%s).", studentId);
  } else {
    throw e;
  }
} catch (Exception e) {
  throw e;
}
return guardianInvitations;

پایتون

guardian_invites = []
page_token = None

while True:
    response = service.userProfiles().guardianInvitations().list(
                                      studentId='student@mydomain.edu').execute()
    guardian_invites.extend(response.get('guardian_invites', []))
    page_token = response.get('nextPageToken', None)
    if not page_token:
        break

if not courses:
    print('No guardians invited for this {0}.'.format(response.get('studentId')))
else:
    print('Guardian Invite:')
    for guardian in guardian_invites:
        print('An invite was sent to '.format(guardian.get('id'),
                                              guardian.get('guardianId')))

به‌طور پیش‌فرض، فقط دعوت‌نامه‌های PENDING برگردانده می‌شوند. به‌عنوان مدیر دامنه، می‌توانید با ارائه یک پارامتر وضعیت، دعوت‌نامه‌ها را در حالت COMPLETED بازیابی کنید.

نگهبانان فعال را فهرست کنید

اگر می خواهید تعیین کنید که کدام کاربران قیم فعال یک دانش آموز خاص هستند، می توانید از متد userProfiles.guardians.list() استفاده کنید. قیم فعال قیمانی هستند که دعوت نامه ایمیل را پذیرفته اند.

جاوا

classroom/snippets/src/main/java/ListGuardians.java
List<Guardian> guardians = new ArrayList<>();
String pageToken = null;

try {
  do {
    ListGuardiansResponse response =
        service.userProfiles().guardians().list(studentId).setPageToken(pageToken).execute();

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

  if (guardians.isEmpty()) {
    System.out.println("No guardians found.");
  } else {
    for (Guardian guardian : guardians) {
      System.out.printf(
          "Guardian name: %s, guardian id: %s, guardian email: %s\n",
          guardian.getGuardianProfile().getName().getFullName(),
          guardian.getGuardianId(),
          guardian.getInvitedEmailAddress());
    }
  }

} catch (GoogleJsonResponseException e) {
  GoogleJsonError error = e.getDetails();
  if (error.getCode() == 404) {
    System.out.printf("There is no record of studentId (%s).", studentId);
  } else {
    throw e;
  }
} catch (Exception e) {
  throw e;
}
return guardians;

پایتون

guardian_invites = []
page_token = None

while True:
    response = service.userProfiles().guardians().list(studentId='student@mydomain.edu').execute()
    guardian_invites.extend(response.get('guardian_invites', []))
    page_token = response.get('nextPageToken', None)
    if not page_token:
        break

if not courses:
    print('No guardians invited for this {0}.'.format(response.get('studentId')))
else:
    print('Guardian Invite:')
    for guardian in guardian_invites:
        print('An invite was sent to '.format(guardian.get('id'),
                                              guardian.get('guardianId')))

نگهبانان را حذف کنید

همچنین می توانید با استفاده از متد userProfiles.guardians.delete() یک سرپرست را از دانش آموز حذف کنید:

جاوا

classroom/snippets/src/main/java/DeleteGuardian.java
try {
  service.userProfiles().guardians().delete(studentId, guardianId).execute();
  System.out.printf("The guardian with id %s was deleted.\n", guardianId);
} catch (GoogleJsonResponseException e) {
  GoogleJsonError error = e.getDetails();
  if (error.getCode() == 404) {
    System.out.printf("There is no record of guardianId (%s).", guardianId);
  }
}

پایتون

service.userProfiles().guardians().delete(studentId='student@mydomain.edu',
                                        guardianId='guardian@gmail.com').execute()