Началось все случайно и внезапно. На просторах интернета мной был обнаружен API, который выдает рандомные цитаты про Чака Норриса: http://api.icndb.com/jokes/random
ICNDB — The Internet Chuck Norris Database
Немного поигравшись с ним, сделал код, который можно встраивать в собственный html:
function getChuck() {
const chuckUrl = 'http://api.icndb.com/jokes/random'
const request = UrlFetchApp.fetch(chuckUrl).getContentText()
const jsonRequest = JSON.parse(request);
return jsonRequest.value.joke
}
function finalChuck(){
const initialChuck = getChuck()
const translatedChuck = LanguageApp.translate(initialChuck, 'en', 'ru')
const chuckArr = [initialChuck, translatedChuck]
return chuckArr;
}
Ничего нового и сложного. Функция getChuck()
получает случайную объект с цитатой, парсит ее и возвращает непосредственно шутку jsonRequest.value.joke
Функция finalChuck()
переводит шутку с английского на русский и возвращает массив из оригинальной и переведенной шуток.
В общем, побаловался и на какое-то время забыл.
Свой API с рандомными цитатами
Чем я хуже? — Подумал я и решил сделать аналогичный API на гугл таблицах
Первое, что понадобилось — цитаты. На просторах рунета их тьма, вот тестовый список:
Это будет серверной частью.
Теперь нужно получить случайную цитату и вернуть ее как объект:
const ss = SpreadsheetApp.getActiveSpreadsheet()
const wsDb = ss.getSheetByName('DataBase')
function getRandomQuote() {
const min = 1
const max = wsDb.getLastRow() - 1;
const rnd = Math.floor(Math.random() * (max - min + 1)) + min
const quoteArr = wsDb.getDataRange().getValues()
const headerArr = quoteArr[0]
const rndArr = quoteArr[rnd]
const quoteObj = {}
headerArr.forEach((h,i) => {
quoteObj[h] = rndArr[i]
})
return quoteObj
}
const wsDb = ss.getSheetByName('DataBase')
— получил лист с цитатами.
const max = wsDb.getLastRow() - 1;
— последняя запись
const rnd = Math.floor(Math.random() * (max - min + 1)) + min
— случайное число для получения случайной записи
const headerArr = quoteArr[0]
— шапка, которая будет использоваться как ключи объекта
const rndArr = quoteArr[rnd]
— случайный массив из общего массива
Наполняю объект:
const quoteObj = {}
headerArr.forEach((h,i) => {
quoteObj[h] = rndArr[i]
})
doGet() — для запуска Web App
Ранее я уже рассматривал как возвращать JSON, так что просто код ниже:
function doGet() {
const response = getRandomQuote()
const contService = ContentService.createTextOutput((JSON.stringify(response)))
contService.setMimeType(ContentService.MimeType.JSON)
return contService
}
Ну и осталось развернуть непосредственно Web App:
Вот и всё. Мой аналогичный API, выдающий рандомную цитату готов. Ссылка здесь.