Google Chat にデータをインポートする

Google Chat API を使って、他のメッセージング プラットフォームからデータをインポートできる 直接移動することもできます。既存のメッセージ、添付ファイル、リアクション、 他のメッセージング プラットフォームから 対応する Chat API のリソース。 このデータをインポートするには、 インポート モード データをインポートできます処理が正常に完了したら これらのスペースは標準の Chat スペースになります。

インポート プロセス全体の概要は次のとおりです。

  1. インポートを計画する
  2. Chat 用アプリの認可を構成する
  3. インポート モードでスペースを作成する
  4. リソースをインポートする
  5. インポートされたリソースを検証する
  6. インポートされたリソースのソースデータとの差異を調整する
  7. 完全なインポート モード
  8. インポート モード後にスペースへのアクセス権を付与する
  9. トラブルシューティング

前提条件

Apps Script

Python

インポートを計画する

インポートするデータの量に合わせて計画を立て、 使用量上限と割り当てが インポート プロセスを行い、Chat スペースのタイプに注意し、 サポートされません。

API の使用量上限を確認する

Chat にデータをインポートするのにかかる時間は、場合によって大きく異なる インポートする Chat リソースの数に応じて異なります。 Chat 用アプリの 使用量上限と、スケジュールされている インポートし、タイムラインを見積もる。

スペースにメッセージをインポートする場合は、 messages.create() 宛 メソッドを実行します。

インポートできるスペースを特定する

インポート モードでは、SPACESpaceType のみがサポートされます。サポートしない DIRECT_MESSAGEデベロッパー プレビューに登録済みの場合 プログラムGROUP_CHATも サポートされません。 詳しくは、SpaceType のドキュメントをご覧ください。 をご覧ください。

インポート モードでスペースを作成する

インポート モードでスペースを作成するには、 create メソッド 日付 Space リソース importModetrue に設定します。

インポート モードでスペースを作成する場合は、次の点に注意してください。

  • 日時 - インポート モードは 30 時間以内に完了する必要があります。 日かかります。スペースが 30 日を過ぎてもインポート モードのまま spaces.create() メソッドが呼び出されてからの日数が経過すると、 自動的に削除され、アクセスも復元もできなくなります。
    • 使用しないでください。 createTime フィールドを使用して 30 日間の有効期限を追跡できます。これは、 これは、spaces.create() メソッドを呼び出す場合と常に同じです。日時 インポート モードでは、createTime フィールドを過去の スペースが作成された時点のタイムスタンプを 元の作成日時は保持されます。
  • スペースのリソース名(name - ドメインに関する情報を取得するために使用される これは、後のステップでコンテンツをインポートする際に参照されます。 できます。

ソースから同等のスペース エンティティの作成時刻を保持する スペースの createTime を設定できます。この createTime には 2000 年 1 月 1 日から現在までの値を設定する必要があります。

インポート モードで外部スペースを作成するには、externalUserAllowedtrue に設定します。 インポートが正常に完了したら、外部ユーザーを追加できます。

次の例は、インポート モードでスペースを作成する方法を示しています。

Apps Script

function createSpaceInImportMode() {
  const space = Chat.Spaces.create({
      spaceType: 'SPACE',
      displayName: 'DISPLAY_NAME',
      importMode: true,
      createTime: (new Date('January 1, 2000')).toJSON()
  });
  console.log(space.name);
}

Python

"""Create a space in import mode."""

import datetime

from google.oauth2 import service_account
from googleapiclient.discovery import build

# Specify required scopes.
SCOPES = [
    'https://www.googleapis.com/auth/chat.import',
]

CREDENTIALS = (
    service_account.Credentials.from_service_account_file('credentials.json')
    .with_scopes(SCOPES)
    .with_subject('EMAIL')
)

# Build a service endpoint for Chat API.
service = build('chat', 'v1', credentials=CREDENTIALS)

result = (
    service.spaces()
    .create(
        body={
            'spaceType': 'SPACE',
            'displayName': 'DISPLAY_NAME',
            'importMode': True,
            'createTime': f'{datetime.datetime(2000, 1, 1).isoformat()}Z',
        }
    )
    .execute()
)

print(result)

次のように置き換えます。

  • EMAIL: 作成するユーザー アカウントのメールアドレス ドメイン全体の権限でなりすまします。
  • DISPLAY_NAME: 作成されたスペースの名前 インポートモードにします表示されるスペースの一意の名前にする必要があります。 Chat ユーザー。その際、表示名と同じ名前を使用することをおすすめします。 選択することもできます

リソースをインポートする

他のメッセージング プラットフォームからリソースをインポートするには、Google Chat を作成します。 リソース(メッセージ、リアクション、添付ファイルなど)を、インポート モードのスペースに表示できます。 スペースでリソースを作成するときに、関連するリソース メッセージ プラットフォームのリソースにアクセスできます。

メッセージ

Chat アプリでは、独自の権限を使用してメッセージをインポートできます。 なりすましによってユーザーに代わって攻撃します。メッセージの作成者は 不正侵入されたユーザーに限られます。詳細については、次をご覧ください: Chat 用アプリを承認します。 データソースをインポートするには、 インポート モードのスペースでは、 create メソッド 日付 Message リソース。 ソースからの元のメッセージの作成時刻を保持するため メッセージング プラットフォームでは、メッセージの createTime を設定できます。この createTime は、スペース作成時刻から 現在の時刻が表示されます。

たとえ、同じスペース内のメッセージに同じ createTime を含めることはできません その時刻の以前のメッセージは削除されます。

インポート モードのスペースでサードパーティの URL を含むメッセージにリンクを表示できない プレビュー機能を使用します。

インポート モードでメッセージを作成する場合、スペースからの通知やメールの送信は に指定されたすべてのユーザーに対して 名前リンクが付けられた場合

次の例は、インポート モードのスペースでメッセージを作成する方法を示しています。

Python

"""Create a message in import mode space."""

import datetime

from google.oauth2 import service_account
from googleapiclient.discovery import build

# Specify required scopes.
SCOPES = [
    'https://www.googleapis.com/auth/chat.import',
]

CREDENTIALS = (
    service_account.Credentials.from_service_account_file('credentials.json')
    .with_scopes(SCOPES)
    .with_subject('EMAIL')
)

# Build a service endpoint for Chat API.
service = build('chat', 'v1', credentials=CREDENTIALS)

NAME = 'spaces/SPACE_NAME'
result = (
    service.spaces()
    .messages()
    .create(
        parent=NAME,
        body={
            'text': 'Hello, world!',
            'createTime': f'{datetime.datetime(2000, 1, 2).isoformat()}Z',
        },
    )
    .execute()
)

print(result)

次のように置き換えます。

リアクション

Chat 用アプリは メッセージのリアクション機能 やり取りできますこのリソースのメソッドと インポート モードのスペースでサポートする認証のタイプについては、以下をご覧ください。 Chat 用アプリを承認します。

添付ファイル

Chat 用アプリは 添付ファイルのアップロード やり取りできますこのリソースのメソッドと インポート モードのスペースでサポートする認証のタイプについては、以下をご覧ください。 Chat 用アプリを承認します。ただし、 「新規顧客の獲得」目標を Google Drive API: 添付ファイルを Google ドライブ ファイルとしてアップロードし、ファイルの URI を インポート モードのスペースにそれぞれのメッセージを表示し、 添付ファイルに関して Google Chat の内部的な上限に達しないようにするメッセージ プラットフォーム 選択します。

過去のメンバーシップ

過去のメンバーシップは、すでに退会したユーザーのために作成されたメンバーシップです。 元のメッセージ プラットフォームから元のスペース エンティティが Chat でのデータ保持の方法についてご説明します。 スペースのインポートが終了した後に新しいメンバーを追加する方法については、 メンバーシップ リソースを作成するをご覧ください。

多くの場合、過去のメンバーは Google のデータ保持ポリシー ユーザーが作成したデータ(メッセージやリアクションなど)を、 Chat にインポートする前にスペース内の過去のメンバーシップ履歴を確認できます。 スペースがインポート モードのときに、過去のメンバーシップをインポートできます。 スペースに追加することもできます。 create メソッド 日付 Membership リソース。 過去のメンバーシップの休暇期間を保持するには、 メンバーシップの deleteTime。この休暇時間は正確である必要があります。 メンバーシップで保持するデータに影響しますさらに、このdeleteTime スペース作成タイムスタンプより後でなければなりません。また、将来のタイムスタンプは指定できません。

deleteTime に加えて、createTime を設定して、 元の結合時刻を返します。deleteTime とは異なり、 createTime は省略可能です。未設定の場合、createTime は次のように自動的に計算されます。 deleteTime から 1 マイクロ秒減算します。設定する場合は、createTimedeleteTime は、スペースの作成日時以降の日付にする必要があります。このcreateTime 情報はデータの保持の判断に使用されず、管理者には表示されません Google 管理コンソールや Google Vault などのツールを利用できます。

スペースへの参加や退出の方法は複数あるかもしれませんが、 ソース メッセージング プラットフォーム(招待状経由、各自で参加、追加 Chat では、これらのアクションはすべて 追加された過去のメンバーシップの createTime フィールドと deleteTime フィールド 削除されます。

次の例は、インポートで過去のメンバーシップを作成する方法を示しています。 あります。

Python

"""Create a historical membership in import mode space."""

import datetime

from google.oauth2 import service_account
from googleapiclient.discovery import build

# Specify required scopes.
SCOPES = [
    'https://www.googleapis.com/auth/chat.import',
]

CREDENTIALS = (
    service_account.Credentials.from_service_account_file('credentials.json')
    .with_scopes(SCOPES)
    .with_subject('EMAIL')
)

# Build a service endpoint for Chat API.
service = build('chat', 'v1', credentials=CREDENTIALS)

NAME = 'spaces/SPACE_NAME'
USER = 'users/USER_ID'
result = (
    service.spaces()
    .members()
    .create(
        parent=NAME,
        body={
            'createTime': f'{datetime.datetime(2000, 1, 3).isoformat()}Z',
            'deleteTime': f'{datetime.datetime(2000, 1, 4).isoformat()}Z',
            'member': {'name': USER, 'type': 'HUMAN'},
        },
    )
    .execute()
)

print(result)

次のように置き換えます。

外部スペースのリソースをインポートする

インポート モードで外部スペースを作成できるのは、認証情報のみです ユーザーに付与します。適用されるのは インポートモードになりますスペースが インポート モードが完了したら、外部ユーザーは インポートされたスペースに参加するよう招待する(アクセスのセクションを参照) その認証情報を使用して Chat API を呼び出すことができます。

インポートされたリソースを検証する

Chat アプリはコンテンツを読み上げて検証できる インポート モードのスペースの 次の list メソッド : Message リソース。 返されたメッセージの Reaction リソースと Attachment リソースを読み取ることができます。 emojiReactionSummaries フィールドと attachment フィールド。Chat アプリは ユーザーの代わりにこのメソッドを呼び出すには、権限を借用する必要があります。詳細情報 詳しくは、 Chat 用アプリを承認します。

Chat アプリは、スペースに参加すると、 検証を行うために、 get メソッド Message リソースに対する権限。 Chat アプリは、このメソッドを呼び出すことで自身のメッセージを 独自の権限で制御できます。詳細については、次をご覧ください: Chat 用アプリを承認します。

また、Chat 用アプリで list メソッド 日付 Membership リソース。 スペースがインポート モードを終了すると、list メソッドは履歴を公開しません。 メンバーシップを失います。Chat アプリは、 なりすましによる被害をもたらします。詳細については、次をご覧ください: Chat 用アプリを承認します。

インポート モードのスペースのプロパティを読み取るには、 get メソッド 日付 Space リソース。 Chat アプリは、独自の権限でのみこのメソッドを呼び出すことができます。 詳細については、次をご覧ください: Chat 用アプリを承認します。

インポートされたリソースのソースデータとの差異を調整する

インポートされたリソースが、ソースの元のエンティティと一致しなくなった場合 インポート中に元のエンティティが変更されたため、メッセージング プラットフォームに Chat アプリは Chat API を呼び出して、インポートされた 確認しましょう。たとえば、ユーザーが元のメッセージのメッセージを編集し、 Google Chat でメッセージが作成された後に、 インポートされたメッセージを Chat アプリで更新して、 元のメッセージの現在の内容が表示されます。

メッセージ

更新方法 サポートされているフィールド インポート モードのスペースでメッセージに表示するには、 update メソッド 日付 Message リソース。 Chat アプリがこのメソッドを呼び出すには、 が使用されました。ユーザーのなりすましを使用した場合 最初のメッセージの作成時に、同じ権限を借用したユーザーを そのメッセージを更新します。

インポート モードのスペースでメッセージを削除するには、 delete メソッド 日付 Message リソース。 インポート モードのスペース内のメッセージは、元の ドメイン内の任意のユーザーになりすまして削除できます。 Chat アプリは、自身のメッセージのみ できます。詳細については、次をご覧ください: Chat 用アプリを承認します。

リアクション

インポート モードのスペースでメッセージに対するリアクションを削除するには、 delete メソッド reactions リソース。このリソースのメソッドと インポート モードのスペースでサポートする認証のタイプについては、以下をご覧ください。 Chat 用アプリを承認します。

添付ファイル

インポート モードのスペースでメッセージの添付ファイルを更新するには、 mediaupload メソッド リソースです。リソースのメソッドと認証の種類については、 スペースのサポートについては、以下をご覧ください。 Chat 用アプリを承認します。

過去のメンバーシップ

インポート モードのスペースで過去のメンバーシップを削除するには、 delete メソッド 日付 Membership リソース。アフター インポート モードを終了すると、delete メソッドで履歴を削除できなくなる メンバーシップを失います。

インポート モードのスペースでは、過去のメンバーシップは更新できません。目標 誤ってインポートされた過去のメンバーシップを修正する場合は、それを削除する必要があります インポート モードのままで再作成する必要があります。

スペース

更新方法 サポートされているフィールド インポート モードのスペースを使用する場合は、 patch メソッド spaces リソース。

インポート モードのスペースを削除するには、 delete メソッド spaces リソース。

リソースのメソッドと認証のサポートの種類については、 インポート モードのスペースでは、 Chat 用アプリを承認します。

インポート モードを完了

completeImport を呼び出す前に メソッドを実行する場合、検証リソースの違いの調整 確認します。スペースのインポート モードを終了すると元に戻せません。 インポート モードのスペースを通常のスペースに変換します。ここにはインジケーターが これらのスペースをデータ インポートに結び付ける Chat。

completeImport を呼び出す日時をメモします。これはリソース名です。 レスポンスが返されます。この情報は 必要に応じて調査してください。

インポート モードを完了してユーザーがスペースにアクセスできるようにするには、 Chat アプリは、completeImport メソッドを Space リソース。 Chat アプリがユーザーに代わってこのメソッドを呼び出すには、 防止できます。詳細については、次をご覧ください: Chat 用アプリを承認します。 権限を借用したユーザーは、スペースにユーザーとして スペースの管理者 呼び出すことをおすすめします。このメソッドは、リクエストから 30 日以内に呼び出す必要があります。 最初の create.space メソッド呼び出し。呼び出しの後でこのメソッドを呼び出そうとすると、 30 日間経過すると、インポートが失敗したため、呼び出しは失敗します。 削除され、アクセスできなくなります。 Chat アプリ。

completeImport メソッドの権限を借用したユーザーは、 [スペース作成者] を選択します。

次の例は、インポート モードを完了する方法を示しています。

Python

"""Complete import."""

from google.oauth2 import service_account
from googleapiclient.discovery import build

# Specify required scopes.
SCOPES = [
    'https://www.googleapis.com/auth/chat.import',
]

CREDENTIALS = (
    service_account.Credentials.from_service_account_file('credentials.json')
    .with_scopes(SCOPES)
    .with_subject('EMAIL')
)

# Build a service endpoint for Chat API.
service = build('chat', 'v1', credentials=CREDENTIALS)

NAME = 'spaces/SPACE_NAME'
result = service.spaces().completeImport(name=NAME).execute()

print(result)

次のように置き換えます。

インポート モード後にスペースへのアクセスを許可する

最近インポートしたスペースに Chat ユーザーがアクセスできるようにするには、次の操作を行います。 Chat アプリでは、引き続き chat.import スコープとユーザーを使用できます 権限借用を最初に create.space() メソッド呼び出しから 30 日以内に 次のとおりです。

これらのメソッドを chat.import スコープで使用するには、権限を借用したユーザーが できます。

外部スペースの場合、 create() メソッド Workspace 組織外のユーザーを招待することもできます。確認事項 理解できたでしょう 既知の制限事項 できます。

トラブルシューティング

Chat スペースのインポート中に問題が発生した場合は、 お問い合わせくださいエラー レスポンスが発生した場合は、 メモ(テキストをコピーしてドキュメントに貼り付けるか、スクリーンショットを保存)します。 参照してトラブルシューティングできます

スペースが正常にインポートされると、次のメッセージとともに CompleteImportSpace が完了します。 ステータスが OK の場合。

30 日間の期限が切れる前にインポートを完了しなかった

前述のインポート モードでスペースを作成するで説明したように、 create メソッドの作成から 30 日が経過してもスペースはインポート モードのまま 自動的に削除されてアクセス不能になり、 修復不可能です。

残念ながら、削除されたスペースは利用できなくなったり復元したりすることができず、 インポートプロセスを再度開始する必要があります。

足りないスペースを探す

新しい Chat スペースが見つからない場合は、 CompleteImportSpace から受け取ったレスポンスを次の表に示します 説明と解決方法をご覧ください

回答を受信しました 調査手順 説明 解決策
CompleteImportSpace が例外をスローし、 GetSpacePERMISSION_DENIED を返します。 スペースが作成された日時とスペースが古いかどうかをレコードで確認します 30 日が経過すると、自動的に削除されます。また、Terraform が インポートされたスペースの スペース 管理ツール または監査ログをご覧ください。 インポート プロセスを開始してから 30 日以上経過している スペースは移行を正常に終了できませんでした。 新しいスペースを作成し、インポート処理を再度実行します。
CompleteImportSpaceOK を返し、次の呼び出しを行います。 GetSpacePERMISSION_DENIED を返します。 インポートされたスペースの記録が スペース管理ツール スペースが削除されたことが示されます 監査ログをご覧ください。 スペースは正常にインポートされましたが、その後削除されました。 新しいスペースを作成し、インポート処理を再度実行します。