Muhafazalar, yasal yükümlülükleri veya koruma yükümlülüklerini yerine getirmek için verileri süresiz olarak saklar. Muhafazalar genellikle bir veya daha fazla kullanıcıya uygulanır. Bu şekilde, bir konuyla alakalı olabilecek verilerin, söz konusu konu etkin olmayana kadar silinmemesi sağlanır.
Muhafazaya tabi bir kullanıcı, muhafazaya alınan verileri silerse söz konusu veriler kullanıcının görünümünden kaldırılır ancak Apps Kasası'nda saklanır. Muhafaza yürürlükte olduğu sürece bir Apps Kasası yöneticisi bu verileri arayabilir ve dışa aktarabilir.
Muhafazalar aşağıdaki bileşenlere sahiptir:
- Hizmet: Verilerin saklanmasından sorumlu uygulamadır. Hizmet; posta, Drive veya Gruplar olarak ayarlanabilir.
- Kapsam: Muhafaza kapsamındaki varlıklar. Kapsam, bir veya daha fazla kullanıcı hesabı ya da bir kuruluş birimi olarak ayarlanabilir.
- Ek seçenekler (isteğe bağlı): Tanımlanan kapsam dahilinde tutulacak verileri daraltmak için kullanılan belirli ayrıntılar (arama sorguları veya yapılandırma seçenekleri). Seçenekler aşağıdakileri içerir:
- mail, Gruplar: muhafazayı daraltmak için kullanılan arama sorgusu
- Drive: Ortak drive'ları muhafazaya dahil et
Apps Kasası kaynaklarıyla çalışmak için hesabın gerekli Apps Kasası'na sahip olması gerekir. ve konu. Bir konuya erişmek için hesabın konuyu oluşturmuş olması ve veya Tüm Konuları Görüntüleme ayrıcalığına sahip olmanız gerekir.
Bir arama sorgusu kullanarak belirli kullanıcı hesaplarındaki postalar için muhafaza oluşturma
Aşağıdaki örnekte "İlk Posta Hesaplarım Muhafazası" adlı bir muhafazanın nasıl gösterildiği gösterilmektedir Şunun için oluşturuldu:
- Hizmet: mail
- Varlık: "kullanıcı1" kullanıcı hesapları ve "user2"
- Ek seçenekler: "to:ceo@company.com" arama sorgusu
AdminSdk'den kullanıcı hesabı kimliklerini alın. Lütfen HeldAccount, hesap kimliğini veya e-posta adresini alabilir. Her ikisi de sağlanırsa e-posta kullanılır ve hesap kimliği yok sayılır.
Java
HeldMailQuery mailQuery = new HeldMailQuery().setTerms("to:ceo@company.com"); Listaccounts = Lists.newArrayList(); accounts.add(new HeldAccount().setAccountId(user1accountId)); accounts.add(new HeldAccount().setEmail(user2Email)); Hold hold = new Hold() .setName("My First mail Accounts Hold") .setCorpus("MAIL"); .setQuery(new CorpusQuery().setMailQuery(mailQuery)) .setAccounts(accounts); Hold createdHold = client.matters().holds().create(matterId, hold).execute();
Python
def create_hold_mail_accounts(service, matter_id, account_id): mail_query = {'terms': 'to:ceo@company.com'} accounts = [ {'accountId': user1_account_id}, {'email': user2_email} ] wanted_hold = { 'name': 'My First mail Accounts Hold', 'corpus': 'MAIL', 'query': { 'mailQuery': mail_query }, 'accounts': accounts } return service.matters().holds().create( matterId=matter_id, body=wanted_hold).execute()
Bir kuruluş biriminde Drive için muhafaza oluşturma ve ortak Drive içeriğini dahil etme
Aşağıdaki örnekte, "İlk Drive Kuruluş Birimi Muhafazam" adlı bir muhafazanın nasıl gösterilmektedir? Şunun için oluşturuldu:
- Hizmet: Drive
- Varlık: "Finans" kuruluş birimi (Kuruluş birimi kimliği, orgUnitId içinde yakalanır)
- Ek seçenekler: Bu kuruluş birimindeki kullanıcıların üyesi olduğu ortak Drive'ları dahil edin
AdminSdk'den kuruluş birimi kimliklerini alın.
Java
HeldOrgUnit orgUnit = new HeldOrgUnit().setOrgUnitId(orgUnitId); // Include shared drives content. HeldDriveQuery driveQuery = new HeldDriveQuery().setIncludeSharedDriveFiles(true); // Create the hold. Hold hold = new Hold() .setName("My First Drive OU Hold") .setCorpus("DRIVE") .setQuery(new CorpusQuery().setDriveQuery(driveQuery)) .setOrgUnit(orgUnit); Hold createdHold = client.matters().holds().create(matterId, hold).execute(); return createdHold;
Python
def create_hold_drive_org(service, matter_id, org_unit_id): drive_query = {'includeSharedDriveFiles': True} org_unit = {'orgUnitId': org_unit_id} wanted_hold = { 'name': 'My First Drive OU Hold', 'corpus': 'DRIVE', 'orgUnit': org_unit, 'query': { 'driveQuery': drive_query } } return service.matters().holds().create( matterId=matter_id, body=wanted_hold).execute()
Belirli grup hesaplarında, Gruplar için tarih aralığı belirleyerek bir muhafaza oluşturun
Aşağıdaki örnekte "İlk Grup Muhafazam" adlı bir muhafaza gösterilmektedir Şunun için oluşturuldu:
- Hizmet: Gruplar
- Varlık: grup hesapları "group1" ve "group2"
- Ek seçenekler: Yalnızca gönderilme tarihleri "startTime" arasında olan iletileri muhafaza et ve "endTime"
AdminSdk'den grup hesap kimliklerini alın.
Java
String APRIL_2_2017_GMT = "2017-04-02T00:00:00Z"; // See below for format*. Listaccounts = Lists.newArrayList(); accounts.add(new HeldAccount().setAccountId(accountId)); accounts.add(new HeldAccount().setAccountId(accountId2)); HeldGroupsQuery groupQuery = new HeldGroupsQuery(); // Restrict by sent date. groupQuery.setStartTime(APRIL_2_2017_GMT); groupQuery.setEndTime(APRIL_2_2017_GMT); // create the hold Hold hold = new Hold() .setName("My First Group Hold") .setCorpus("GROUPS") .setQuery(new CorpusQuery().setGroupsQuery(groupQuery)); hold.setAccounts(accounts); Hold createdHold = client.matters().holds().create(matterId, hold).execute();
Python
def create_hold_groups_date_range(service, matter_id, group_account_id): groups_query = { 'startTime': '2017-04-02T00:00:00Z', # See below for format* 'endTime': '2017-04-02T00:00:00Z' } accounts = [{'accountId': group_account_id}] wanted_hold = { 'name': 'My First Group Hold', 'corpus': 'GROUPS', 'query': { 'groupsQuery': groups_query }, 'accounts': accounts } return service.matters().holds().create( matterId=matter_id, body=wanted_hold).execute()
- Zaman damgası biçimi. Ayrıca, başlangıç/bitiş Zamanları, GMT'ye dönüştürülür ve belirtilen tarihin başına yuvarlanır.
Mevcut muhafazaları sorgulama ve değiştirme
Aşağıdaki örnekte, mevcut bir muhafazaya dahil edilen tüm hesapların nasıl listeleneceği gösterilmektedir:
Java
client.matters().holds().accounts().list(matterId, holdId).execute().getAccounts();
Python
# If no accounts are on hold, ['accounts'] will raise an error. def list_held_accounts(service, matter_id, hold_id): return service.matters().holds().accounts().list( matterId=matter_id, holdId=hold_id).execute()['accounts']
Aşağıdaki örnekte, mevcut bir muhafazaya hesap ekleme ve mevcut bir muhafazadan hesap kaldırma işlemi gösterilmektedir:
Java
// Add an account by id. client .matters() .holds() .accounts() .create(matterId, holdId, new HeldAccount().setAccountId(accountId)) .execute(); // Remove an account by id. client.matters().holds().accounts().delete(matterId, holdId, accountId).execute(); String email = "email@email.com"; // Add an account by email. client .matters() .holds() .accounts() .create(matterId, holdId, new HeldAccount().setEmail(email)) .execute();
Python
def add_held_account(service, matter_id, hold_id, account_id): held_account = {'accountId': account_id} return service.matters().holds().accounts().create( matterId=matter_id, holdId=hold_id, body=held_account).execute() def remove_held_account(service, matter_id, hold_id, account_id): return service.matters().holds().accounts().delete( matterId=matter_id, holdId=hold_id, accountId=account_id).execute() def add_held_account(service, matter_id, hold_id, email): held_account = {'email': email} return service.matters().holds().accounts().create( matterId=matter_id, holdId=hold_id, body=held_account).execute()
Aşağıdaki örnekte, mevcut bir kuruluş birimi muhafazasındaki kuruluş biriminin nasıl değiştirileceği gösterilmektedir:
Java
Hold hold = client.matters().holds().get(matterId, holdId).execute(); hold.getOrgUnit().setOrgUnitId(newOrgUnitId); Hold modifiedHold = client.matters().holds().update(matterId, holdId, hold).execute(); return modifiedHold;
Python
def update_hold_ou(service, matter_id, hold_id, org_unit_id): current_hold = get_hold(matter_id, hold_id) current_hold['orgUnit'] = {'orgUnitId': org_unit_id} return service.matters().holds().update( matterId=matter_id, holdId=hold_id, body=current_hold).execute()
Aşağıdaki örnekte, bir konu için tüm muhafazaların nasıl listeleneceği gösterilmektedir:
Java
String matterId = "Matter Id";// List all holds. List
holdsList = client.matters().holds().list(matterId).execute().getHolds(); // Paginate on holds. ListHoldsResponse response = client .matters() .holds() .list(matterId) .setPageSize(10) .execute();
String nextPageToken = response.getNextPageToken(); if (nextPageToken != null) { client .matters() .holds() .list(matterId) .setPageSize(10) .setPageToken(nextPageToken) .execute(); }
Python
# This can paginate in the same manner as with matters. def list_holds(service, matter_id): return service.matters().holds().list(matterId=matter_id).execute()