在Swift上上传Google Drive上的电子表格文件

时间:2016-06-02 20:57:25

标签: ios swift csv google-sheets google-drive-api

我可以将一个NSMutableString字符串(以逗号分隔)作为CSV文件上传到Swift中的Google云端硬盘。但是,我想将其另存为Google电子表格。

显然,当您使用queryForFilesInsertWithObject方法时,它们在Objective-C中具有“convert”属性。但是,我找不到Swift版本。我这样创建了我的查询:

让query = GTLQueryDrive.queryForFilesCreateWithObject(metadata,uploadParameters:uploadParameters)

由于没有q.convert属性,我尝试了以下两个语句:

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

然而,他们都没有工作。

我还尝试将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: "")
     }
})

我将不胜感激。

1 个答案:

答案 0 :(得分:0)

您需要先上传文件,Drive API中的文件由GTLDriveFile类表示。必须单独提取或上载文件的内容。

您需要将其转换为便携式格式。创建新文件时,您既可以指定https://es.stackoverflow.com/q/11786/5984的初始元数据,也可以使用GTLUploadParameters指定内容。为<bean id="a" class="org.demo.javabrains.Point"> /* Same as before */ </bean> <bean id="b" class="org.demo.javabrains.Point"> /* Same as before */ </bean> <bean id="c" class="org.demo.javabrains.Point"> /* Same as before */ </bean>

设置convert property to yes

尝试使用以下代码上传文件并将其转换为电子表格:

GTLUploadParameters * uploadParameters = nil;     self.driveFile = [[GTLDriveFile alloc] init];

GTLQueryDrive

有关详细信息,请查看Google Drive API IOS的​​官方Google文档:documentation