Допустим, у меня есть в таблицах некий телефонный справочник, который необходимо передавать куда-то другой программе или другому серверу:
Для этого мне необходимо передать эти данные в формате JSON-текста.
Подготавливаю данные для передачи
function getJSONArr(){
const ss = SpreadsheetApp.getActiveSpreadsheet()
const ws = ss.getSheetByName('DB')
const dataArr = ws.getDataRange().getValues()
const headers = dataArr.shift()
const jsonArr = dataArr.map(row => {
let obj = {}
headers.forEach((h,i) => {
obj[h] = row[i]
})
return obj
})
return jsonArr
}
Получая на выходе следующий массив:
Передача данных
За передачу данных в гугл таблицах отвечает встроенная функция doGet() о которой я ранее уже писал.
Когда скрипт публикуется как веб-приложение, функции doGet() и doPost() вызываются всякий раз, когда делается запрос к URL-адресу скрипта. Вместо возврата объекта пользовательского интерфейса, созданного, например, с помощью HTML, можно использовать Content Service для возврата необработанного текстового содержимого.
Более детально можно почитать здесь — https://developers.google.com/apps-script/reference/content
function doGet() {
const response = getJSONArr()
const contService = ContentService.createTextOutput((JSON.stringify(response)))
contService.setMimeType(ContentService.MimeType.JSON)
return contService
}
В функцию doGet() я сначала передаю массив: const response = getJSONArr()
А затем собираю все это как Content Service в JSON формате
const contService = ContentService.createTextOutput((JSON.stringify(response))) contService.setMimeType(ContentService.MimeType.JSON)
Далее, разворачиваю скрипт как Web app. При переходе по ссылке получая следующее: