1

私はiosで(私には明らかではありませんが)uploadParametersで標準のqueryForFilesInsertWithObjectを使用してGoogleドライブフォルダーにファイルを挿入し、GTLDriveParentReferenceオブジェクトでフォルダーIDを設定し、そのオブジェクトを配列に追加し、その配列をに割り当てる方法を見つけましたアップロードされたファイルの「親」プロパティ。私がまだ理解していないのは、複製を作成せずに、既存の Google ドライブ ファイルを新しいバージョンで上書きする方法です。また、新しくアップロードされた Google ドライブ ファイルに、ローカル デバイス ファイルと同じ日時スタンプを付けたいと考えています。file/update メソッドを使用して file.modifiedDate と query.setModifiedDate=YES を設定しようとすると、常に 400 Bad Request が返されます。

patch を使用してタイトルを変更することはできますが、api を使用して modifiedDate を設定することはできません。Google の Try it! を使用して modifiedDate を変更できました。APIs Explorer で、Google のサーバーは正常に動作しています。失敗するコードは次のとおりです。

GTLDriveFile *file = [GTLDriveFile object];
NSString *fId = insertedFile.identifier;
file.title = @"Tony.jpg";
file.modifiedDate = myNewGoogleDate; // "2012-12-31T08:00:00+00:00"

GTLQueryDrive *qu = [GTLQueryDrive queryForFilesPatchWithObject:file fileId:fId];
qu.setModifiedDate = YES;

[service executeQuery:qu completionHandler:^(GTLServiceTicket *ticket,...

modifiedDate の 2 行を削除すると、google-drive ファイルのタイトルが適切に変更されます。executeQuery への API 呼び出しをトレースしたところ、次の結果が "DataToPost" であることがわかりました。

{"method":"drive.files.patch","id":"gtl_7","jsonrpc":"2.0",
"params": {"setModifiedDate":true,"resource":
{"modifiedDate":"2012-12-31T08:00:00+00:00",
"title":"Tony.jpg"},"fileId":"0BxRlXPR_hfR9OEJSdDdyQjkyaE0"},"apiVersion":"v2"}

この投稿で「Bad Request」を見た人はいますか? executeQuery から返されるエラーは次のとおりです。

Error Domain=com.google.GTLJSONRPCErrorDomain Code=400 "The operation couldn’t be
completed. (Bad Request)" UserInfo=0x80724b0 {error=Bad Request,
GTLStructuredError=GTLErrorObject 0x806a7a0: {message:"Bad Request" code:400 data:[1]},
NSLocalizedFailureReason=(Bad Request)}

機能する modifiedDate を設定するコードを誰かが持っていますか?

4

3 に答える 3

1

queryForFilesUpdateWithObject代わりに を使用して、元のファイルを使用してファイルを更新fileIdし、正しいファイルが更新されるようにします。

+ (id)queryForFilesUpdateWithObject:(GTLDriveFile *)object
                         fileId:(NSString *)fileId
               uploadParameters:(GTLUploadParameters *)uploadParametersOrNil {
于 2013-01-08T01:14:59.243 に答える
0

同じ既存の識別子を指定すると、ファイル名の重複は回避されます(おそらく上記の回答で説明されているように)。modifiedDate は、GTLDateTime 構造を使用して設定できます。両方のソリューションを以下に示します。

NSString *fileID = gF.identifier;
gF.modifiedDate  = [GTLDateTime dateTimeWithDate:myNSDate timeZone:[NSTimeZone localTimeZone]];

if (fileID==0) query  = [GTLQueryDrive queryForFilesInsertWithObject:gF               uploadParameters:upParams];
else           query  = [GTLQueryDrive queryForFilesUpdateWithObject:gF fileId:fileID uploadParameters:upParams];
query.setModifiedDate = YES;
于 2014-09-17T00:58:46.920 に答える