יצירה וניהול של אפוטרופוסים

Guardianמשאב מייצג משתמש, כמו הורה, שמקבל מידע על הקורסים והעבודות של תלמיד. צריך להזמין את ההורה או האפוטרופוס באמצעות כתובת האימייל שלו. בדרך כלל, ההורה או האפוטרופוס לא משתייכים לדומיין של התלמיד ב-Classroom.

ההזמנות מיוצגות על ידי המשאב GuardianInvitation. המשתמש המוזמן יקבל אימייל עם בקשה לאשר את ההזמנה. אם כתובת האימייל לא משויכת לחשבון Google, המשתמש יתבקש ליצור חשבון לפני שיאשר את ההזמנה.

כשהמשתמש מוזמן ולפני שהוא מאשר את ההזמנה, הסטטוס של GuardianInvitation הוא PENDING. אחרי שהמשתמש יאשר את ההזמנה, GuardianInvitation יסומן כCOMPLETED וייווצר Guardian משאב.

יכול להיות שסטטוס GuardianInvitation ישתנה לסטטוס COMPLETED אם תוקף ההזמנה יפוג או אם משתמש מורשה יבטל את ההזמנה (לדוגמה, באמצעות השיטה PatchGuardianInvitation). אפשר גם לבטל את הקשר בין הורה או אפוטרופוס לבין תלמיד או תלמידה על ידי הורה או אפוטרופוס, מורה ב-Classroom או אדמין, באמצעות אפליקציית האינטרנט של Classroom או באמצעות השיטה DeleteGuardian.

מי יכול לנהל את ההורים והאפוטרופסים

בטבלה הבאה מפורטות הפעולות שאפשר לבצע לגבי הורים ואפוטרופסים, בהתאם לסוג המשתמש שעבר אימות:

טבלה של רשימות ACL שקשורות לאפוטרופסות לפי סוג משתמש

טווחים

יש שלוש רמות הרשאה שמאפשרות לכם לנהל הורים ואפוטרופסים:

  • https://www.googleapis.com/auth/classroom.guardianlinks.me.readonly: צפייה באפוטרופסים של המשתמש.
  • https://www.googleapis.com/auth/classroom.guardianlinks.students.readonly: הצגת פרטי האפוטרופסים וההזמנות לאפוטרופסים של תלמידים שהמשתמש מלמד או מנהל.
  • https://www.googleapis.com/auth/classroom.guardianlinks.students: הצגה וניהול של משגיחים והזמנות למשגיחים של תלמידים שהמשתמש מלמד או מנהל.

פעולות נפוצות

בקטע הזה מתוארות כמה מהפעולות הנפוצות של הורים ואפוטרופסים שאולי תרצו לבצע באמצעות Google Classroom API.

יצירת הזמנה להורה או לאפוטרופוס

בדוגמה הבאה אפשר לראות איך ליצור הזמנה של הורה או אפוטרופוס באמצעות השיטה userProfiles.guardianInvitations.create():

Java

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;

Python

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.

ביטול הזמנה של הורה או אפוטרופוס

כדי לבטל הזמנה, משנים את הסטטוס שלה מ-PENDING ל-COMPLETE באמצעות קריאה ל-method‏ userProfiles.guardianInvitations.patch(). זו הדרך היחידה להסיר הזמנה.

Java

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;

Python

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()

הצגת רשימת ההזמנות לתלמיד ספציפי

אפשר לקבל רשימה של כל ההזמנות שנשלחו לתלמיד מסוים באמצעות ה-method ‏userProfiles.guardianInvitations.list(). כברירת מחדל, יוחזרו רק PENDING הזמנות. מנהל דומיין יכול גם לאחזר הזמנות במצב COMPLETED באמצעות הפרמטר states.

Java

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;

Python

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')))

הצגת רשימה של אפוטרופסים פעילים

כדי לקבוע אילו משתמשים הם הורים או אפוטרופסים פעילים של תלמיד מסוים, משתמשים בשיטה userProfiles.guardians.list(). אפוטרופסים פעילים הם אפוטרופסים שאישרו את ההזמנה.

Java

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;

Python

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():

Java

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);
  }
}

Python

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