記録保持では、法的義務または保存義務を果たすためにデータを無期限に保持します。通常、案件に関連する可能性があるデータは、その案件が無効になるまで削除できないように、1 人以上のユーザーに対して記録保持が設定されます。
記録保持の対象となるユーザーが保持データを削除すると、そのデータはユーザーの画面から削除されますが、Vault には保持されます。記録保持(リティゲーション ホールド)が設定されている場合、Vault 管理者はそのデータを検索して書き出すことができます。
記録保持には次の要素があります。
- サービス - 保持するデータを担当するアプリケーション。サービスには、メール、ドライブ、またはグループを設定できます。
- 範囲 - 記録保持の対象となるエンティティ。範囲は、1 つ以上のユーザー アカウント、または組織部門(OU)に設定できます。
- その他のオプション(省略可) - 定義されたスコープに含めるデータを絞り込むために使用される具体的な詳細(検索クエリまたは設定オプション)。次の選択肢があります。
<ph type="x-smartling-placeholder">
- </ph>
- メール、グループ: 記録保持を絞り込むための検索クエリ
- ドライブ: 共有ドライブを記録保持対象に含める
Vault リソースを操作するには、アカウントに必要な Vault が必要です。 権限と認証情報へのアクセス 重要です案件にアクセスするには、アカウントが案件を作成済みで、 [全案件の閲覧] 権限を割り当てることもできます。
検索クエリを使用して特定のユーザー アカウントのメールの記録保持(リティゲーション ホールド)を作成する
次の例は、「My First mail Accounts Hold」という名前の記録保持を示しています。作成されるファイルは次のとおりです。
- Service: mail
- エンティティ: ユーザー アカウント「user1」と「user2」
- その他のオプション: 検索語句「to:ceo@company.com」
AdminSdk からユーザー アカウント ID を取得します。なお、 HeldAccount は、アカウント ID またはメールアドレスを受け取ることができます。両方を指定すると、メールアドレスが使用されます。 アカウント ID は無視されます
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()
組織部門でドライブの記録保持を作成し、共有ドライブのコンテンツを含める
次の例は、「My First Drive OU Hold」という名前の記録保持がどのように設定されているかを示しています。作成されるファイルは次のとおりです。
- サービス: ドライブ
- エンティティ: 組織部門「Finance」(組織部門 ID は orgUnitId に取り込まれます)
- その他のオプション: この組織部門のユーザーがメンバーになっている共有ドライブを含める
AdminSdk から組織部門 ID を取得します。
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()
期間を指定して特定のグループ アカウントでグループの記録保持を作成する
次の例は、「My First Group Hold」という名前の記録保持がどのように適用されるかを示しています。作成されるファイルは次のとおりです。
- サービス: グループ
- エンティティ: グループ アカウント「group1」と「group2」
- その他のオプション: 送信日が「startTime」の範囲のメッセージのみを保持する「endTime」
AdminSdk からグループ アカウント ID を取得します。
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()
- タイムスタンプの形式。また、start/endTime は GMT に変換され、指定された日付の開始時点に切り捨てられます。
既存の記録保持(リティゲーション ホールド)のクエリと変更
次の例は、既存の記録保持(リティゲーション ホールド)に含まれるすべてのアカウントを一覧表示する方法を示しています。
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']
次の例は、既存の記録保持(リティゲーション ホールド)に対してアカウントを追加または削除する方法を示しています。
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()
次の例は、既存の組織部門の記録保持(リティゲーション ホールド)に含まれる組織部門を変更する方法を示しています。
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()
次の例は、案件のすべての記録保持を一覧表示する方法を示しています。
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()