Использование Android дооснащения с Google Sheets и Google Scripts - PullRequest
0 голосов
/ 25 февраля 2020

Я делаю проект, в котором мне нужно читать и записывать данные с / на лист Google с помощью сценариев Google. До сих пор мне удалось получить данные с листа, но я не знаю, как написать их с помощью Retrofit (но я сделал это с залпом).

Сценарий Google выглядит следующим образом:

      function doPost(request) {
        var jsonPost = JSON.parse(request.postData.contents);

        var spreadsheetId = jsonPost.spreadsheetId;
        var sheetname = jsonPost.sheet;
        var row = jsonPost.row;

        var sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName(sheetname);
        sheet.appendRow(row);

        return ContentService.createTextOutput(JSON.stringify({sheet:sheetname, row: row}));      
    }

Итак, я должен отправить JSON в форме:

    {"spreadsheetId":id, "sheet":sheet, "row":[[id, name, species]]}

Функция, вызываемая моим приложением:

    fun appendRow(property: DatabaseProperty) {
        DatabaseApi.retrofitService.appendRow(listOf(property)).enqueue(object : Callback<DatabasePostProperty> {
            override fun onFailure(call: Call<DatabasePostProperty>, t: Throwable) {
                toastText = "Failed: ${t.message}"
            }

            override fun onResponse(
                call: Call<DatabasePostProperty>,
                response: Response<DatabasePostProperty>
            ) {
                toastText = "Success: ${response.body()}"
            }
        })
    }

где DatabaseProperty:

    @Parcelize
    data class DatabaseProperty(
    val id: String,
    val name: String,
    val species: String
    ): Parcelable

Наконец, в моем интерфейсе Retrofit у меня есть:

    @POST("myscriptId")
    fun appendRow(
        @Field("row") propertyList: List<DatabaseProperty>,
        @Field("sheet") sheet: String = SHEET,
        @Field("spreadsheetId") spreadsheetId: String = SPREADSHEET_ID
    ):
            Call<DatabasePostProperty>

где DatabasePostProperty:

data class DatabasePostProperty(
    val row: List<DatabaseProperty>,
    val spreadsheetId: String,
    val sheet: String
)

Но все это не работает и выдает: Use JsonReader.... to accept malformed JSON

Я понятия не имею, как сделать эту работу, я только учусь Android, и я действительно не понимаю документацию

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...