Google表格iOS - 将文档映射到SDK

时间:2016-06-03 21:22:05

标签: ios swift google-sheets-api

将Google表格V4文档映射到SDK方法非常困难。例如:

要向电子表格附加一行,documentation states有一个请求资源,例如:

"appendCells": {
    object(AppendCellsRequest)
  },

其中AppendCellsRequest是

{
  "sheetId": number,
  "rows": [
    {
      object(RowData)
    }
  ],
  "fields": string,
}

但是,如果我按如下方式使用SDK:

    let range = "Sheet1"
    let url = String(format:"%@/%@/values/%@", baseUrl, spreadsheetId, range)
    let params = ["valueInputOption":"RAW"]
    let fullUrl = GTLUtilities.URLWithString(url, queryParameters: params)

    let body = GTLObject()

    body.JSON = [ "appendCells" : [
                        "sheetId" : 0,
                        "rows"    : [[value, value, value, value]],
                        "fields"  : "*"
                     ]]

    driveService.fetchObjectByUpdatingObject(body, forURL: fullUrl, completionHandler: {
            (ticket:GTLServiceTicket!, object:AnyObject!, error:NSError!) in

    })

失败并显示错误:

"Invalid JSON payload received. Unknown name "append_cells" at 'data': Cannot find field."

1 个答案:

答案 0 :(得分:0)

您似乎在调用错误的网址。您的网址构造如下:

let url = String(format:"%@/%@/values/%@", baseUrl, spreadsheetId, range)

这将导致:

http://sheets.googleapis.com/spreadsheets/{spreadsheet_id}/values/{range}

...但是您正在尝试使用AppendCellsRequest对象,而value集合并不支持该对象。链接中的每个Request对象都描述了一个属于batchUpdate调用的request body的对象。有关详细信息,请参阅Updating Spreadsheets指南。