Membuat dan mengelola wali

Resource Guardian mewakili pengguna, seperti orang tua, yang menerima informasi tentang kursus dan tugas siswa. Wali, yang biasanya bukan anggota domain Classroom siswa, harus diundang menggunakan alamat email mereka.

Undangan diwakili oleh resource GuardianInvitation. Pengguna yang diundang akan menerima email yang memintanya untuk menerima undangan. Jika alamat email tidak dikaitkan dengan Akun Google, pengguna akan diminta untuk membuatnya sebelum menerima undangan.

Saat pengguna diundang dan sebelum menerima undangan, GuardianInvitation memiliki status PENDING. Setelah pengguna menerima undangan, GuardianInvitation akan ditandai sebagai COMPLETED dan resource Guardian akan dibuat.

Status GuardianInvitation juga dapat diubah menjadi COMPLETED jika masa berlakunya berakhir atau jika pengguna yang berwenang membatalkan undangan (misalnya, menggunakan metode PatchGuardianInvitation). Hubungan wali juga dapat diputuskan oleh wali, pengajar Classroom, atau administrator, menggunakan aplikasi web Classroom atau metode DeleteGuardian.

Siapa yang dapat mengelola wali

Tabel berikut menjelaskan tindakan yang dapat dilakukan sehubungan dengan wali, sesuai dengan jenis pengguna yang diautentikasi:

Tabel ACL terkait wali menurut jenis pengguna

Cakupan

Ada tiga cakupan yang memungkinkan Anda mengelola wali:

  • https://www.googleapis.com/auth/classroom.guardianlinks.me.readonly: melihat wali pengguna sendiri.
  • https://www.googleapis.com/auth/classroom.guardianlinks.students.readonly: melihat wali dan undangan wali untuk siswa yang diajarkan atau dikelola oleh pengguna.
  • https://www.googleapis.com/auth/classroom.guardianlinks.students: melihat dan mengelola wali dan undangan wali untuk siswa yang diajarkan atau dikelola oleh pengguna.

Tindakan umum

Bagian ini menjelaskan beberapa tindakan wali umum yang mungkin ingin Anda lakukan menggunakan Google Classroom API.

Membuat undangan wali

Contoh berikut menunjukkan cara membuat undangan wali menggunakan metode userProfiles.guardianInvitations.create():

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

Responsnya menyertakan ID yang ditetapkan server yang dapat digunakan untuk merujuk ke GuardianInvitation.

Membatalkan undangan wali

Untuk membatalkan undangan, ubah status undangan dari PENDING menjadi COMPLETE dengan memanggil metode userProfiles.guardianInvitations.patch(). Ini adalah satu-satunya cara untuk menghapus undangan.

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

Mencantumkan undangan untuk siswa tertentu

Anda bisa mendapatkan daftar semua undangan yang telah dikirim untuk siswa tertentu menggunakan metode userProfiles.guardianInvitations.list(). Secara default, hanya undangan PENDING yang akan ditampilkan. Administrator domain juga dapat mengambil undangan dalam status COMPLETED dengan memberikan parameter states.

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

Mencantumkan wali yang aktif

Untuk menentukan pengguna mana yang merupakan wali aktif untuk siswa tertentu, gunakan metode userProfiles.guardians.list(). Wali aktif adalah wali yang telah menerima undangan.

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

Menghapus wali

Anda juga dapat menghapus wali dari siswa, menggunakan metode userProfiles.guardians.delete():

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