2016-06-02 2 views
0

Swift의 Google 드라이브에 CSV 파일로 NSMutableString 문자열 (쉼표로 구분)을 업로드 할 수 있습니다. 그러나 Google 스프레드 시트로 저장하려고합니다.Swift의 Google 드라이브에 스프레드 시트 파일 업로드

queryForFilesInsertWithObject 메서드를 사용하면 Objective-C에 "convert"속성이있는 것 같습니다. 그러나, 나는 이것의 신속한 버전을 찾을 수 없습니다.

하자 쿼리 = GTLQueryDrive.queryForFilesCreateWithObject (메타 데이터, uploadParameters : uploadParameters) 나는 같은 내 쿼리를 생성 :

query.q = "convert=true" 
query.q = "convert=YES" 

q.convert 재산이 없기 때문에

, 나는 다음과 같은 문장을 모두 시도 그러나 그들 중 누구도 일하지 않았습니다.

또한 mimeType을 application/vnd.openxmlformats-officedocument.spreadsheetml.sheetapplication/vnd.google-apps.spreadsheet으로 설정하려고했지만 도움이되지 않았습니다. 다음과 같이

내 코드는 다음과 같습니다

let data = NSMutableString() 
var i = 0 
repeat { 
     data.appendString("\(measures[i]), \(SegmentedControlChoiceValues[i])\n") 
     i += 1 
} while i < measures.count 
let dataAsString = data as String 

let metadata = GTLDriveFile() 
metadata.mimeType = "text/csv" 
metadata.name = "Subject01.bar" 

let dataToUpload = dataAsString.dataUsingEncoding(NSUTF8StringEncoding) 
let uploadParameters = GTLUploadParameters(data: dataToUpload!, MIMEType: metadata.mimeType) 
let query = GTLQueryDrive.queryForFilesCreateWithObject(metadata, uploadParameters: uploadParameters) 

query.q = "convert=true" 

Constants.service.executeQuery(query, completionHandler: { (ticket, insertedFile , error) -> Void in 

    if error == nil { 
     print("File Saved: " + metadata.name) 
     success(createdFileID: insertedFile.identifier) 
    } else { 
     print("An error occurred" + error.description) 
     success(createdFileID: "") 
    } 
}) 

내가 어떤 도움을 주셔서 감사합니다.

답변

0

먼저 파일을 업로드해야하며 드라이브 API의 파일은 GTLDriveFile 클래스로 표시됩니다. 파일 내용은 별도로 가져 오거나 업로드해야합니다.

이식 가능한 형식으로 변환해야합니다. 새 파일을 만들 때 GTLDriveFile이라는 초기 메타 데이터와 GTLUploadParameters가있는 콘텐츠를 모두 지정합니다. 업로드하고이 코드를 사용하여 스프레드 시트 파일을 변환 GTLQueryDrive

시도에 대한 convert property to yes을 설정

GTLUploadParameters * uploadParameters = 무기 호; self.driveFile = [[GTLDriveFile alloc] init]; https://developers.google.com/drive/ios/reference/ios-client/interface_g_t_l_upload_parameters#properties

:

NSData *dat = [NSData dataWithContentsOfURL:[NSURL fileURLWithPath:root]]; 
uploadParameters = 
[GTLUploadParameters uploadParametersWithData:dat MIMEType:@"text/csv"]; 

self.driveFile.title = @"Report.csv"; 
GTLQueryDrive *query = nil; 
if (self.driveFile.identifier == nil || self.driveFile.identifier.length == 0) 
{ 
    query = [GTLQueryDrive queryForFilesInsertWithObject:self.driveFile 
             uploadParameters:uploadParameters]; 

    query.convert = YES; // Convert file format to spread sheet 

} 
else 
{ 
    query = [GTLQueryDrive queryForFilesUpdateWithObject:self.driveFile 
                fileId:self.driveFile.identifier 
             uploadParameters:uploadParameters]; 
} 
UIAlertView *alert = [DrEditUtilities showLoadingMessageWithTitle:@"While data is uploading..." 
                 delegate:self]; 

[self.driveService executeQuery:query completionHandler:^(GTLServiceTicket *ticket, 
                  GTLDriveFile *updatedFile, 
                  NSError *error) 
{ 
    appDel.File_Id = updatedFile.identifier; 
    [alert dismissWithClickedButtonIndex:0 animated:YES]; 
    if (error == nil) 
    { 
     self.driveFile = updatedFile; 

     UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Feel Fix" message:@"Successfully Uploaded" delegate:self cancelButtonTitle:nil otherButtonTitles:@"Ok", nil]; 
     [alert show]; 
    } 
    else 
    { 
     NSLog(@"An error occurred: %@", error); 
     [DrEditUtilities showErrorMessageWithTitle:@"Unable to save file" 
              message:[error description] 
              delegate:self]; 
    } 
}]; 

자세한 내용은 Google 드라이브 API iOS 용 구글 공식 문서를 확인하십시오

관련 문제