ios - 在 Swift 中写入 Google 表格
问题描述
我真的很困惑如何写入 Excel 表,这是公开的。到目前为止,我已经下载了 Alamofire和GoogleAPIClientForREST cocoapods。所以我想知道,如果我想写信给工作表,我首先需要实现一个谷歌登录,还是我可以使用Alamofire发送数据。我非常迷茫,所以如果有人可以帮助我,那就太好了。
谷歌表:https ://docs.google.com/spreadsheets/d/1zJR0uk6Pb6BuxJihFyxwe4ipQdBY4E9FFR74geBj8p0/edit#gid=0
func makeAndSendRequest() {
let baseUrl = "https://sheets.googleapis.com/v4/spreadsheets"
let spreadsheetId = "1zJR0uk6Pb6BuxJihFyxwe4ipQdBY4E9FFR74geBj8p0"
let params = ["valueInputOption": "RAW"]
let range = "Studen!A3:B3"
//need to add params
let url = baseUrl + "/" + spreadsheetId + "/values/" + range + "/valueInputOption=RAW/"
let fullUrl = URL(string: url)!
//my values
let requestParams = [
"values": [
1,
2
]
]
//my auth is after Bearer so "Bearer 901390"
let header = ["Authorization":"Bearer "]
let requestURL = "https://sheets.googleapis.com/v4/spreadsheets/\(spreadsheetId)/values/\(range)?valueInputOption=RAW"
let req = Alamofire.request(requestURL, method: .put, parameters: requestParams, encoding: JSONEncoding.default,headers: header)
req.responseJSON { response in debugPrint(response) }
}
解决方案
尝试先解决此问题。
valueInputOption
是一个查询参数,见:https ://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/update
您的 URL 至少应该是:
let url = baseUrl + "/" + spreadsheetId + "/values/" + range + "?valueInputOption=RAW"
接下来您需要修复您的请求正文,每个文档都需要范围:https ://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/update
{
"range": "A3:B3",
"values": [
[
1,
2
]
]
}
此范围应与查询参数中的范围相同,例如Sheet1!:A3:B3
查询参数中的范围。
请注意,它以工作表名称开头,不应为“studen”
我在同一页面上使用了 Playground 工具,并且能够调用 api 来更改电子表格中的数据。
最后我得到 200 响应代码和以下 json:
{
"spreadsheetId": "1zJR0uk6Pb6BuxJihFyxwe4ipQdBY4E9FFR74geBj8p0",
"updatedRange": "Sheet1!A3:B3",
"updatedRows": 1,
"updatedColumns": 2,
"updatedCells": 2
}
----- 编辑 ----- 正如你所问,API 需要 Oauth 令牌,实际上调用了处理这个的框架G Suite
推荐阅读
- css - Flex box - 如果空间允许,将项目排列在每行多个元素的列中
- machine-learning - 对卷积神经网络中的 2D、3D 卷积的理解感到困惑 3D 或多光谱图像
- amazon-web-services - 根据文件日期从本地 AWS S3 存储桶复制数据
- php - 带有 IONIC 3 和 PHP 的 CORS
- netty - 使用固定通道池时的 Eventloop 组构造函数
- python - KeyError "[.....]" 不在索引中
- selenium - eclipse xpath元素按钮位置
- kubernetes - NFS 服务器关闭时 kubernetes 中的 Pod 会怎样?
- flutter - 如何在 TextField 之外的任何地方点击使其失去焦点?
- reactjs - 为什么类型不能分配给泛型类型