Googleドライブの「変更」APIをテストして、いくつか質問があります。Googleドライブ - 変更点:リストAPI - フォルダレベルでの変更を検出する
期待: ファイルが入っている「マイドライブ」の下にフォルダツリー構造があります。特定のフォルダID内で項目が追加/編集/削除されたかどうかを検出するために、Changes:list APIを呼びたいと思います。
のAPI Explorerが試さ:https://developers.google.com/drive/v2/reference/changes/list
質問:
を私は 'largestChangeId' を取得するために、このAPIに特定のフォルダIDを渡すために任意のオプションが表示されません。このapiはparm 'q'をサポートしていないようですか?出来ますか?
代わりの解決策として、そのフォルダの 'modifiedDate'属性を格納し、次回の比較に使用することを考えました。しかし、アイテムがそのフォルダ内で更新されると更新されません。その内容が更新されたときにフォルダの変更された日付が更新されるウィンドウのようには動作しないのでしょうか?
フォルダレベルで変更を検出できるかどうか聞いてみたいですか?
おかげ
[EDIT]働い
ソリューション:
使用するファイル:すべてを一覧表示するリスト。 選択したフィールド:アイテム/ ID、アイテム/ modifiedDate、アイテム/親/ ID、アイテム/タイトル
サブツリーを
- トラバース(タイトル検索を使用して 'MyRootFolder' の例)フォルダIDを開始ゲット再帰的配列検索を使用して構造体(親とIDをリンクする)を呼び出し、最大modifiedDateと総ファイル数を取得します。
- 最大modifiedDateとファイル数をアプリストレージに保存します。
- 以降の呼び出しでは、新しいmax modifiedDateを保存済みと比較し、合計ファイル数を保存済みと比較します。いずれかが一致しない場合、 'MyRootFolder'内のコンテンツが更新されています。
解決策は、削除されたオブジェクトでは機能しません。変更フィード内の永久に削除されたオブジェクトのIDを超える情報はありません。 – Jerome
'Changes:list' APIで完全な応答が表示されない場合があります。理由は、フォルダ内のファイルの削除を検出する必要があるため、 'includeDeleted'フラグを有効にしています。しかし、レスポンス内の削除されたアイテムに親IDがないため、使い慣れていません。だから、私は彼らが削除する前に存在したフォルダを識別することができません - 私は私のフォルダレベルの範囲外の削除されたファイルに興味がない。 私はポストをソリューションで更新しました。 –
はい、そうですが、これはユーザー機能です。あなたのアプリは、削除されたデータについて何か知っているべきですか?ユーザーが削除しました。 IDはあなたのシステムをクリーンアップするためのものです。開発者としては、これは私にとっては完璧ではありませんが、ここではユーザーベースの意図が正しいと思います。 –