1

Swift で Google Sheets API を学習する途中で、単一の範囲をスプレッドシートに書きたいと思っていました。

Quickstart iOS GuideBasic Writing の例を調べると、次のコードが用意されています。

func constructAndSendAQuery() {
    let baseUrl = "https://sheets.googleapis.com/v4/spreadsheets"
    let spreadsheetId = "1FhbBdEvpcyHsdfgsdft65eDGHre2fLVki5ZolMmZaRs"
    let range = "Sales!A31:C31"
    let url = baseUrl + "/" + spreadsheetId + "/values/" + range
    let params = ["valueInputOption": "RAW"]
    let fullUrl = GTLUtilities.URLWithString(url, queryParameters: params)

    let body = GTLObject()
    body.JSON = ["majorDimension":"ROWS",
                 "values": ["One", "Two", "Three"]]

    service.fetchObjectByInsertingObject(body, 
                                         forURL: fullUrl,
                                         delegate: self, 
                                         didFinishSelector: #selector(ViewController.processTheResponse(_:finishedWithObject:error:)))
}

何が間違っていたのかわかりませんが、「要求された URL はこのサーバーで見つかりませんでした」というエラー メッセージが表示されました。

4

3 に答える 3

1

@sam-berlinが述べたようにfetchObjectByUpdatingObject、代わりに使用する必要がありfetchObjectByInsertUpdatingました。

しかし、もう 1 つ小さなミス/タイプミスがありました。JSON を構築する際に、角かっこのペアを失い、無効な値に関するエラーが発生しました。

作業コードは次のようになります。

func constructAndSendARequest() {

    let baseUrl = "https://sheets.googleapis.com/v4/spreadsheets"
    let spreadsheetId = "1FhbBdEvpsfgzb3Akn1opmru0iresdfglbki5ZMmZaRs"
    let range = "Sales!A3:D3"
    let url = baseUrl + "/" + spreadsheetId + "/values/" + range
    let params = ["valueInputOption": "RAW"]
    let fullUrl = GTLUtilities.URLWithString(url, queryParameters: params)


    let body = GTLObject()
    body.JSON = ["range": range,
                 "majorDimension": "ROWS",
                 "values": [["One", "Two", "Three"]]]

    service.fetchObjectByUpdatingObject(body, forURL: fullUrl, delegate: self, didFinishSelector: #selector(ViewController.processTheResponse(_:finishedWithObject:error:)))   
}

service.fetchObjectByUpdatingObject(body, forURL: fullUrl, completionHandler: nil)応答を使用して処理しないことも可能です。

于 2016-06-14T23:00:27.003 に答える