2016-06-14 5 views
0

Auf meinem Weg zum Lernen von Google Tabellen API mit Swift wollte ich einen einzelnen Bereich in eine Tabelle schreiben.Wie kann ich grundlegende Informationen über die Google Tabellen-API erstellen?

Blick in Quickstart iOS Guide und Basic Writing examples kam ich mit diesem Code:

func constructAndSendAQuery() { 
    let baseUrl = "https://sheets.googleapis.com/v4/spreadsheets" 
    let spreadsheetId = "1FhbBdEvpcyHzb3Akn1opmru0ire2fLVki5ZolMmZaRs" 
    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:))) 
} 

Sie wissen nicht, was ich falsch gemacht habe, aber ich habe die Fehlermeldung: „Die angeforderte URL nicht auf diesem Server nicht gefunden wurde“.

Antwort

0

Gemäß der GTLService code, fetchObjectByInsertUpdating tut eine POST, während diese Anfrage eine PUT erfordert. Es scheint, dass fetchObjectByUpdatingObject sollte eine PUT tun, also versuchen Sie es stattdessen.

+0

Ja, danke Sam! Es half. –

1

Da @sam-berlin erwähnt, hätte ich fetchObjectByUpdatingObject statt fetchObjectByInsertUpdating verwenden sollen.

Aber es gab noch einen kleinen Fehler/Tippfehler. Bei der Erstellung von JSON habe ich ein Paar eckige Klammern verloren und einen ungültigen Wert erhalten.

Der Arbeits Code sieht wie folgt aus:

func constructAndSendARequest() { 

    let baseUrl = "https://sheets.googleapis.com/v4/spreadsheets" 
    let spreadsheetId = "1FhbBdEvpcyHzb3Akn1opmru0ire2fLVki5ZolMmZaRs" 
    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:))) 
} 

Es ist auch möglich, service.fetchObjectByUpdatingObject(body, forURL: fullUrl, completionHandler: nil) zu verwenden und nicht verarbeiten die Antwort.

Verwandte Themen