2012-10-29 5 views
6

Googleドライブの「変更」APIをテストして、いくつか質問があります。Googleドライブ - 変更点:リストAPI - フォルダレベルでの変更を検出する

期待: ファイルが入っている「マイドライブ」の下にフォルダツリー構造があります。特定のフォルダID内で項目が追加/編集/削除されたかどうかを検出するために、Changes:list APIを呼びたいと思います。

のAPI Explorerが試さ:https://developers.google.com/drive/v2/reference/changes/list

質問:

  1. を私は 'largestChangeId' を取得するために、このAPIに特定のフォルダIDを渡すために任意のオプションが表示されません。このapiはparm 'q'をサポートしていないようですか?出来ますか?

  2. 代わりの解決策として、そのフォルダの 'modifiedDate'属性を格納し、次回の比較に使用することを考えました。しかし、アイテムがそのフォルダ内で更新されると更新されません。その内容が更新されたときにフォルダの変更された日付が更新されるウィンドウのようには動作しないのでしょうか?

フォルダレベルで変更を検出できるかどうか聞いてみたいですか?

おかげ

[EDIT]働い

ソリューション:

  1. 使用するファイル:すべてを一覧表示するリスト。 選択したフィールド:アイテム/ ID、アイテム/ modifiedDate、アイテム/親/ ID、アイテム/タイトル

  2. サブツリーを

  3. トラバース(タイトル検索を使用して 'MyRootFolder' の例)フォルダIDを開始ゲット再帰的配列検索を使用して構造体(親とIDをリンクする)を呼び出し、最大modifiedDateと総ファイル数を取得します。
  4. 最大modifiedDateとファイル数をアプリストレージに保存します。
  5. 以降の呼び出しでは、新しいmax modifiedDateを保存済みと比較し、合計ファイル数を保存済みと比較します。いずれかが一致しない場合、 'MyRootFolder'内のコンテンツが更新されています。

答えて

2

これは現在、APIで直接行うことはできません - ごめんなさい!

私は、現在の最良の解決策は、正規のフィードを使用して、正しい親が設定されたものにコード内の結果をフィルタすることだと思います。

+0

解決策は、削除されたオブジェクトでは機能しません。変更フィード内の永久に削除されたオブジェクトのIDを超える情報はありません。 – Jerome

+0

'Changes:list' APIで完全な応答が表示されない場合があります。理由は、フォルダ内のファイルの削除を検出する必要があるため、 'includeDeleted'フラグを有効にしています。しかし、レスポンス内の削除されたアイテムに親IDがないため、使い慣れていません。だから、私は彼らが削除する前に存在したフォルダを識別することができません - 私は私のフォルダレベルの範囲外の削除されたファイルに興味がない。 私はポストをソリューションで更新しました。 –

+0

はい、そうですが、これはユーザー機能です。あなたのアプリは、削除されたデータについて何か知っているべきですか?ユーザーが削除しました。 IDはあなたのシステムをクリーンアップするためのものです。開発者としては、これは私にとっては完璧ではありませんが、ここではユーザーベースの意図が正しいと思います。 –

1

drive.changes.list google drive APIで、ユーザーは「startChangeId」パラメータを渡すことができます。

私は以前のAPIの結果から "largestChangeId"の値を使用しています。そのため、ユーザーが行った変更を段階的に構築でき、ツリー全体を再構築する必要はありません。

「startChangeId」パラメータとともに「includeDeleted」パラメータをサポートしていない理由を、私は驚いています。

関連する問題