Получение Undefined: sheet.DeleteSheet при попытке выполнить запрос BatchUpdate в электронных таблицах

Я не совсем понимаю, как работает api листов Google для go.

Я хочу удалить лист в позиции 0 из электронной таблицы. Вот фрагмент кода для запроса, который сейчас не работает.

    rb2 := &sheets.BatchUpdateSpreadsheetRequest{
            Requests: requests,
    }

    resp2, err := srv.Spreadsheets.BatchUpdate(destinationSpreadsheetId, rb3).Do()

Я думал, что создам request, прежде чем создавать тело запроса в строке 1 выше.

    ds := &sheets.DeleteSheetRequest{
            SheetId: int64(0),
    }
    deleteSheet := &sheets.DeleteSheet{
        DeleteSheetRequest: ds,
    }    
    requests := []*sheets.Request{
        DeleteSheet: deleteSheet,
    }

Если я попытаюсь построить его, компилятор выдаст ошибку,

sheets\sheets.go:118:19: undefined: sheets.DeleteSheet
sheets\sheets.go:123:4: undefined: DeleteSheet

Я пытался следовать руководству по таблицам, https://godoc.org/google.golang.org/api/sheets/v4#BatchUpdateSpreadsheetRequest


person Hai    schedule 01.10.2018    source источник
comment
Могу я спросить вас о местоположении 0?   -  person Tanaike    schedule 01.10.2018
comment
Расположение 0, как на первом листе внутри электронной таблицы, содержащей как минимум два листа.   -  person Hai    schedule 01.10.2018
comment
Разве это не должно быть sheets.DeleteSheetRequest, а не sheets.DeleteSheet? .DeleteSheet находится под Request не sheets   -  person tehhowch    schedule 01.10.2018
comment
@Hai Спасибо за ответ. Если вам уже известен идентификатор листа, который вы хотите удалить, вы можете удалить лист, используя его. Если у вас нет идентификатора листа, сначала получите идентификатор листа первого индекса в электронной таблице, используя spreadsheets.get.   -  person Tanaike    schedule 02.10.2018


Ответы (1)


Исправление:

    deleteSheetRequest := &sheets.DeleteSheetRequest{
        SheetId: 0,
    }

    requests := []*sheets.Request{
        {DeleteSheet: deleteSheetRequest},
    }

    rb3 := &sheets.BatchUpdateSpreadsheetRequest{
            Requests: requests,

            // TODO: Add desired fields of the request body.
    }

    resp2, err := srv.Spreadsheets.BatchUpdate(destinationSpreadsheetId, rb3).Do()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(resp2)

@tehhowch, спасибо за помощь. Я исправил это, а затем, в конце концов, после просмотра кода понял, что в [] * sheet.Request отсутствуют скобки массива. Ага.

person Hai    schedule 02.10.2018