如何使用Google Sheets API V4从Swift 2.2创建新的Google Sheet? [英] How do I create a new Google Sheet from Swift 2.2 using Google Sheets API V4?
问题描述
我正在尝试使用Google Sheets API V4和Swift 2.2创建一个新的Google工作表.我希望获得带有电子表格ID的返回对象.我想提供一个标题.我的猜测是我没有正确设置URL参数的格式.预先感谢任何可以提供帮助的人!
import GoogleAPIClient
import GTMOAuth2
import UIKit
class ViewController: UIViewController {
private let kKeychainItemName = "Google Sheets API"
private let kClientID = "blah-blahblahblah.apps.googleusercontent.com"
private let scopes = ["https://www.googleapis.com/auth/spreadsheets"]
private let service = GTLService()
...
...
...
func createNewSheet() {
print("Creating New Sheet ...\n")
let baseUrl = "https://sheets.googleapis.com/v4/spreadsheets"
let params = ["title": "NewSheet"]
let fullUrl = GTLUtilities.URLWithString(baseUrl,queryParameters: params)
service.fetchObjectWithURL(fullUrl,
objectClass: GTLObject.self,
delegate: self,
didFinishSelector: #selector(ViewController.displayResultWithTicket2(_:finishedWithObject:error:))
)
}
func displayResultWithTicket2(ticket: GTLServiceTicket,
finishedWithObject object : GTLObject,
error : NSError?) {
if let error = error {
showAlert("Error", message: error.localizedDescription)
return
}
print(object)
...
...
到添加新表在Sheetsv4中,使用:
POST https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId:batchUpdate
URI请求正文:
{
"requests": [
{
"addSheet": {
"properties": {
"title": "Deposits",
"gridProperties": {
"rowCount": 20,
"columnCount": 12
},
"tabColor": {
"red": 1.0,
"green": 0.3,
"blue": 0.4
}
}
}
}
]
}
如何在Swift中执行此操作?
使用HTTP请求,例如NSURL
,NSURLRequest
和NSURLSession
或NSURLConnection
使用NSURLSession
初始化NSURL对象和NSURLSession
中的NSURLSessionDataTask
.然后使用resume()
运行任务.
let url = NSURL(string: "http://www.stackoverflow.com")
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
print(NSString(data: data!, encoding: NSUTF8StringEncoding))
}
task.resume()
为此代码段的此线程. /p>
I am attempting to create a new google sheet using the Google Sheets API V4 and Swift 2.2. I am hoping to get a return object with the spreadsheetID. I would like to provide a title. My guess is that i am not formatting the URL parameter correctly. Thanks in advance for anyone who can help!
import GoogleAPIClient
import GTMOAuth2
import UIKit
class ViewController: UIViewController {
private let kKeychainItemName = "Google Sheets API"
private let kClientID = "blah-blahblahblah.apps.googleusercontent.com"
private let scopes = ["https://www.googleapis.com/auth/spreadsheets"]
private let service = GTLService()
...
...
...
func createNewSheet() {
print("Creating New Sheet ...\n")
let baseUrl = "https://sheets.googleapis.com/v4/spreadsheets"
let params = ["title": "NewSheet"]
let fullUrl = GTLUtilities.URLWithString(baseUrl,queryParameters: params)
service.fetchObjectWithURL(fullUrl,
objectClass: GTLObject.self,
delegate: self,
didFinishSelector: #selector(ViewController.displayResultWithTicket2(_:finishedWithObject:error:))
)
}
func displayResultWithTicket2(ticket: GTLServiceTicket,
finishedWithObject object : GTLObject,
error : NSError?) {
if let error = error {
showAlert("Error", message: error.localizedDescription)
return
}
print(object)
...
...
To add a new sheet in Sheetsv4, use:
POST https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId:batchUpdate
URI request body:
{
"requests": [
{
"addSheet": {
"properties": {
"title": "Deposits",
"gridProperties": {
"rowCount": 20,
"columnCount": 12
},
"tabColor": {
"red": 1.0,
"green": 0.3,
"blue": 0.4
}
}
}
}
]
}
How to do this in Swift?
Make use of HTTP requests like NSURL
, NSURLRequest
and NSURLSession
or NSURLConnection
Using NSURLSession
Initialize an NSURL object and an NSURLSessionDataTask
from NSURLSession
. Then run the task with resume()
.
let url = NSURL(string: "http://www.stackoverflow.com")
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
print(NSString(data: data!, encoding: NSUTF8StringEncoding))
}
task.resume()
Credits to this thread for that snippet.
这篇关于如何使用Google Sheets API V4从Swift 2.2创建新的Google Sheet?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!