У меня была такая же проблема; Я смог обойти эту проблему, проанализировав 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);
}
});
}
Однако следует отметить, что он включает в себя любые пустые строки в отличие от канала, поэтому вы можете захотеть отфильтровать выходную информацию по некоторому столбцу.