URL, который должен отображать данные Google Sheet в формате JSON, показывает внутреннюю ошибку - PullRequest
0 голосов
/ 30 апреля 2019

Я хочу преобразовать данные листа Google в формат JSON, чтобы использовать их на своем веб-сайте.Тем не менее, я получаю ошибку 500 каждый раз, когда веб-сайт пытается получить файл JSON.

Я уже пробовал различные методы для преобразования моего листа в JSON, доступные в Интернете

$url = 'https://spreadsheets.google.com/feeds/list/1dpmzzKNR8hRILX6qMD0KTruxxXYT3UAXR0EcX0zS0dE/1/public/full?alt=json';
$file= file_get_contents($url);
$json = json_decode($file);
$rows = $json->{'feed'}->{'entry'};
return $rows;

1 Ответ

0 голосов
/ 30 апреля 2019

У меня была такая же проблема; Я смог обойти эту проблему, проанализировав html со страницы pubhtml и вывести похожий формат JSON:

Вместо использования идентификатора Google Sheet используйте ссылку "Опубликовать на веб-странице".

Есть некоторые строки, которые я пропускаю, так как некоторые для замороженных строк, но вы должны иметь возможность изменять код в соответствии с вашими потребностями.

function importGoogleSheets(publishedUrl, sheetId, onSuccess, onError) {

        var headers = [];
        var rows;

        $.ajax({
            url: publishedUrl+'?gid='+sheetId+'&single=true',
            success: function(data) {
                data = $.parseHTML(data)[5];
                htmldata = data;
                rows = data.getElementsByTagName('tr');

                for (var i = 0; i < rows[1].cells.length; i++) {
                    headers[i] = 'gsx$' + rows[1].cells[i].textContent.toLowerCase().replace(/[^0-9a-z]*/g, '');
                }

                for (var i = 3; i < rows.length; i++) {
                    temp = {};
                    for (var h = 1; h < headers.length; h++) {
                        temp[headers[h]] = {'$t': rows[i].cells[h].textContent};
                    }
                    all_data[i - 3] = temp;
                }
                onSuccess(all_data);
            },
            error: function(data) {
                onError(data);
            }
        });
    }

Однако следует отметить, что он включает в себя любые пустые строки в отличие от канала, поэтому вы можете захотеть отфильтровать выходную информацию по некоторому столбцу.

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