Velileri yönetme

Veli kaynağı, öğrencinin kursları ve çalışmaları hakkında bilgi alan veli gibi bir kullanıcıyı temsil eder. Genellikle öğrencinin Classroom alanının üyesi olmayan velinin veli olmak için e-posta adresi üzerinden davet edilmesi gerekir.

Bu davetiye, durumu PENDING olan bir Veli Daveti kaynağı oluşturur. Ardından kullanıcıya, daveti kabul etmesini isteyen bir e-posta gönderilir. E-posta adresi bir Google hesabıyla ilişkili değilse daveti kabul etmeden önce kullanıcıdan bir hesap oluşturması istenir.

Davetiyenin durumu PENDING iken kullanıcı davetiyeyi kabul edebilir. Bu durumda bir Guardian kaynağı oluşturulur ve GuardianInvitation COMPLETED olarak işaretlenir. Bir davetin süresi dolduğunda veya yetkili bir kullanıcı daveti iptal ettiğinde (örneğin, PatchGuardianInvitation yöntemini kullanarak) de COMPLETED durumuna geçebilir. Veli ilişkisi, veli, Classroom öğretmeni veya yönetici tarafından Classroom kullanıcı arayüzü ya da DeleteGuardian yöntemi kullanılarak da sonlandırılabilir.

Velileri kimler yönetebilir?

Aşağıdaki tabloda, kimliği doğrulanmış kullanıcının türüne göre velilerle ilgili olarak gerçekleştirilebilecek işlemler açıklanmaktadır:

Kullanıcı türüne göre velilerle ilgili ACL'ler tablosu

Kapsamlar

Velileri yönetmenize olanak tanıyan üç kapsam vardır:

Sık kullanılan işlemler

Bu bölümde, Google Classroom API'yi kullanarak gerçekleştirmek isteyebileceğiniz bazı yaygın veli işlemleri açıklanmaktadır.

Veli davetiyesi oluşturma

Aşağıdaki örnekte, userProfiles.guardianInvitations.create() yöntemini kullanarak nasıl veli davetiyesi oluşturabileceğiniz gösterilmektedir:

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

Sonuç, Veli Daveti'ne başvurmak için kullanılabilecek, sunucu tarafından atanmış bir tanımlayıcı içerir.

Veli davetiyesini iptal etme

Bir davetiyeyi iptal etmek için userProfiles.guardianInvitations.patch() yöntemini çağırarak davetiyenin durumunu PENDING yerine COMPLETE olarak değiştirin. Davetleri kaldırmanın şu anda tek yolunun bu olduğunu unutmayın.

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

Belirli bir öğrenci için davetleri listeleme

userProfiles.guardianInvitations.list() yöntemini kullanarak belirli bir öğrenciye gönderilen tüm davetiyelerin listesini alabilirsiniz:

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

Varsayılan olarak yalnızca PENDING davetiye döndürülür. Alan yöneticisi olarak, states parametresini sağlayarak COMPLETED eyaletindeki davetleri de alabilirsiniz.

Etkin velileri listeleme

Belirli bir öğrencinin etkin velilerinin hangi kullanıcılar olduğunu belirlemek istiyorsanız userProfiles.guardians.list() yöntemini kullanabilirsiniz. Etkin veliler, e-posta davetini kabul eden velilerdir.

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

Velileri kaldırma

userProfiles.guardians.delete() yöntemini kullanarak da bir öğrenciden veliyi kaldırabilirsiniz:

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