Написать в Google Sheets в Swift - PullRequest
0 голосов
/ 14 ноября 2018

Я действительно запутался, как писать на листе Excel, который является публичным.Пока что я скачал Alamofire и GoogleAPIClientForREST cocoapods.Поэтому мне было интересно, если я хочу написать на листе, нужно ли мне сначала выполнить вход в Google или я могу просто отправить данные через Alamofire .Я супер потерян, так что если кто-то может мне помочь, это было бы здорово.

Google лист: 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) }

}

1 Ответ

0 голосов
/ 15 ноября 2018

Попробуйте сначала исправить это.

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, как в параметре запроса.

Обратите внимание, что он начинается с имени листа, он не должен быть "изучен"

Я использовал инструмент игровой площадки на том жестраницы и возможность вызвать API для изменения данных в вашей электронной таблице.

В конце я получаю 200 код ответа и следующий json: { "spreadsheetId": "1zJR0uk6Pb6BuxJihFyxwe4ipQdBY4E9FFR74geBj8p0", "updatedRange": "Sheet1!A3:B3", "updatedRows": 1, "updatedColumns": 2, "updatedCells": 2 }

----- Edit ----- Как вы и просили, API нужен токен Oauth,Основа для этого на самом деле называется G Suite

Пожалуйста, найдите руководство здесь: https://developers.google.com/gsuite/guides/ios

...