ユーザおよび共有ドライブの変更を追跡する



  • この記事は、Google Drive™ APIに関する記事を和訳したものです。
  • 原文: Track changes for users and shared drives
  • 元記事のライセンスは CC-BYで、この和訳記事のライセンスは CC-BYです。
  • 自己責任でご利用ください。
  • 和訳した時期は 2019年6月ころです。

Drive内でアイテムの変更を追跡する必要がある Google Driveアプリの場合、Changes collectionは、変更を検出するための効率的な方法を提供します。 コレクションは、アイテムが与えられた時点以降に変更した場合にのみ、それぞれのアイテムの現在の状態を提供することによって機能します。

Google Driveは、それぞれのユーザおよび共有ドライブのために変更ログを保持しています。 それぞれは、それらに関心のあるアイテムの変更の、独自の記録を持っています。

ユーザに表示されるすべてのアイテムの変更を追跡するには、ユーザの変更ログおよび、ユーザがメンバとなっているすべての共有ドライブの変更ログの両方がリプレイされる必要があります。

変更エントリを有効にする

変更エントリは、与えられた時点でのファイルあるいは共有ドライブの状態を表します。 変更は、リビジョン間の差分を提供しません。 どのプロパティが変更したかを知る必要があるアプリケーションは、以前から知られているアイテムの状態を保持し、比較すべきです。

変更はアイテムの現在の状態を表すので、個々の変更エントリは無効にされ、対応するアイテムのためのより新しい変更エントリに置換されるかもしれません。

墓石

ユーザに利用可能でなくなったアイテムの変更エントリは、変更エントリでは deletedとしてマークされます。 変更エントリでは、アイテムの IDのみが利用可能です。

共有ドライブを追跡する

それぞれの共有ドライブは、独自の変更ログを持っています。 ユーザが共有ドライブのメンバであるかもしれない場合であっても、特定の変更は共有ドライブの変更ログのみに反映され、ユーザの変更ログには反映されません。 もしファイルが共有ドライブに所属しているならば、ファイルが過去のある時点でユーザの変更ログにまだ表示されていた場合でさえ、ユーザの変更ログを単独でリプレイすることは、ファイルのステータスを正しく更新しないでしょう。 代わりに、すべての変更を捕捉するために共有ドライブの変更ログをリプレイしなければなりません。

ユーザの変更ログに含まれるもの

ユーザの変更ログは、ユーザがメンバとなっている共有ドライブへの変更、およびユーザのコーパス内のファイルの変更を含んでいます。 コーパスの詳細については、変更およびリビジョンの概要を参照してください。

これらの共有ドライブの変更は、ユーザの変更ログに表示されます:

  • ユーザが共有ドライブのメンバになった。
  • ユーザがもはや共有ドライブのメンバではなくなった。
  • ユーザがメンバになっている共有ドライブへの直接に関連する変更もあります、例えば:
    • 共有ドライブ上のユーザのアクセスレベルが変更された。
    • 共有ドライブがリネームされた。

ユーザが共有ドライブのメンバになるとき、共有ドライブのための単一の変更イベントがユーザの変更ログに表示されます。 これは、共有ドライブ内のすべてのアイテムへのアクセスを意味します。 ユーザは、彼らがメンバになるときに、共有ドライブの内側に含まれるアイテムの変更を受け取りません。

共有ドライブのメンバは、その使用状況に基づいて共有ドライブ内のアイテムの変更イベントを確認するかもしれません。 しかしながら、アプリケーションは、ユーザが共有ドライブのメンバであるとき、これらのイベントを依存すべきではありません。 代わりに、変更を追跡するために共有ドライブの変更ログを使用してください。

もし、非メンバが共有ドライブ内の個々のアイテムへのファイルアクセス権を付与されているならば、それらのアイテムの変更はユーザの変更ログにて追跡されます。 これは、ユーザと直接共有されている非共有の Driveアイテムと同じです。

共有ドライブの変更ログ上に表示される変更

もしユーザが共有ドライブのメンバであるならば、彼らは、次の内容を含む共有ドライブの変更ログにアクセスすることができます:

  • メンバの追加あるいは削除といった、共有ドライブ自体への任意の変更。
  • 共有ドライブに含まれるアイテムの直接の変更。

パーミッションおよび機能を同期する

共有ドライブあるいは共有ドライブの内側のアイテムへのパーミッションの変更は、アイテム自体にのみ反映されます。 その項目の直接あるいは非直接のすべての子はこの変更を継承しますが、それらのアイテムそれぞれの変更ログに個別のエントリはないでしょう。 クライアントは、変更を完全に再構築するために、新しい機能を伝播するか、親が変更した場合にそれぞれのアイテムを再フェッチしなければなりません。