Как сохранить ответ Google Sheets API на файл - PullRequest
1 голос
/ 31 октября 2019

В своем стремлении учиться я хочу сохранить ответ диапазона данных GSheet в файл для дальнейшего использования в другой программе.

Из того, что я вижу, GSheet API отвечает многомерным массивом с данными ячеек,поэтому моя первая мысль - просто использовать цикл for для записи каждой строки в текстовый файл и обратного процесса, чтобы добавлять каждую строку в новый массив при его чтении.

resp.Values ​​имеет тип [] [] interface {} https://godoc.org/google.golang.org/api/sheets/v4#ValueRange

fmt.Println("Writing response to file:")
f, _ := os.Create("gSheetDump")
defer f.Close()

for _, row := range resp.Values {
    for _, column := range row{
        f.WriteString(column.(string)) //the cell data
        f.WriteString(" ") //space as column delimiter
    }
    f.WriteString("\n") //new row of data
}
f.Sync()

Для простоты пропущены проверки ошибок и другие рекомендации.

На самом деле код работает в простых сценариях, и я получаю файл с (всего 2 столбца)со случайными числами для целей тестирования)

0.1334477383 0.9119418
0.9302617807 0.6528034118
0.2401513927 0.7896743972
0.7807423779 0.006702754729
0.5697572871 0.4395454573
0.01565383694 0.1403231739
0.3567884312 0.6965423498

Но проблемы возникают, когда вы получаете более сложные данные, когда простого пробела недостаточно для разделения столбцов.

Существует некоторый идиоматический способ достиженияжелаемый результат?

1 Ответ

0 голосов
/ 31 октября 2019

Вы можете использовать кодировку json вместо текста:

json.NewEncoder(f).Encode(resp.Values)

Это запишет данные в файл f как массив JSON. Вы не можете прочитать его обратно с помощью интерфейса [] [] {}, вы должны указать конкретный тип:

var data [][]float64
json.NewDecoder(f).Decode(&data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...