0

Я использую API визуализации Google для запроса электронной таблицы. Если я вставляю URL-адрес в браузере:Запрос API визуализации Google (gviz) и выборка из электронной таблицы

https://docs.google.com/spreadsheets/d/14dIMLkVwHRo-bkvdIhaDwC-rGBHLefftlC6CCCs5YrWSc/gviz/tq?sheet=customers&tq=select+*+Where+A='27938' 

A - столбец идентификатора клиента. Я получаю этот текстовый комментарий JSON назад: google.visualization.Query.setResponse({"version":"0.6","reqId":"0","status":"ok","sig":"7671558882","table":{"cols":[{"id":"A","label":"ID","type":"string"},{"id":"B","label":"FirstName",.....

1) Как я могу сделать то же самое в функции скрипта google (а не с javascript-функции на стороне клиента)?

Я попытался с помощью URLFetchApp.fetc():

var url = 'https://docs.google.com/spreadsheets/d/14dIMLkVwHRo-bkvdIhaDwC-rGBHLefftlC6CCCs5YrWSc/gviz/tq?sheet=customers&tq=select+*+Where+A=27938' 
var result = URLFetchApp.fetch(url); 
var out = JSON.parse(result.getContentText()); 
Logger.log(out); 

Регистратор показывает длинный список определений стилей CSS и HTML-теги. Если я могу получить ответ JSON и проанализировать его, я планировал сделать некоторую бизнес-логику внутри функции, чтобы вернуть значение клиенту.

ответ

0

Мне кажется, вам нужно вызвать функцию openByID в скрипте apss (documentation), затем вызвать метод getRange(), после чего вы получите массив с двумя измерениями с информацией о листе.

с этим, то вы можете создать JSON для использования диаграммы услуг (docs)

Есть, вероятно, некоторые библиотеки, которые уже. Проверьте сайт this, вы можете найти тот, который вам нужен. Надеюсь, это поможет.

0

Я обнаружил проблемы с листами google и gvis-запросом - за неподтвержденную причину Google Таблицы возвращают не чистый JSON, но добавляют к нему некоторые s ***, поэтому перед использованием JSON.parse() нам нужно разрезать его (или обрезать полезную часть ответа):

var httpresponse = UrlFetchApp.fetch(urlrequest, options).getContentText(); 

var from = httpresponse.indexOf("{"); 
var to = httpresponse.lastIndexOf("}")+1; 

var jsonText = httpresponse.slice(from, to); 

var parsedText = JSON.parse(jsonText); 
Смежные вопросы