我可以将一个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.sheet
和application/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 :(得分: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