И, внезапно, начать стоит … с Web apps!
Что такое Web apps?
Если простым языком то это пользовательский интерфейс (user interface) для гугл скрипта.
doGet() является одним из требований к тому, что обязательно должно быть в таком скрипте:

Как указано выше, функция doGet() должна возвращать HTML service.
Пишем первый скрипт
Открываем Google Script и создаём новый проект.
Далее пишем функцию doGet()
function doGet() {
const res = HtmlService.createHtmlOutputFromFile('Index');
return res;
}
а затем создаём стандартный пустой файл Index.html

Смотрим что внутри
Если посмотреть на res через гугловский Logger.log то результатом будет класс HtmlOutput, что не сильно помогает. Однако, если все то же самое сделать через console.log то будет уже чуть понятнее — это объект.
function doGet() {
const res = HtmlService.createHtmlOutputFromFile('Index');
Logger.log(res);
console.log(res);
return res;
}

а значит здесь можно заглянуть глубже.
У класса HtmlOutput есть метод getContent() который возвращает строковое значение
function doGet() {
const res = HtmlService.createHtmlOutputFromFile('Index');
console.log(res.getContent());
return res;
}

ровно то, что содержится в Index.html
Что дальше?
Полученные данные можно передавать дальше
Допишем простую функцию, которая записывает результат doGet в Google sheets.
function postRes(){
const result = doGet();
const ss = SpreadsheetApp.openById('1XGwo-dsVFsmhGTV-1neyMIxFaTlmwRP5oZnhzvGKd7I');
const ws = ss.getSheetByName('Лист1');
ws.getRange('C1').setValue(result.getContent());
}
Открываем книгу по ее ID
const ss = SpreadsheetApp.openById('1XGwo-dsVFsmhGTV-1neyMIxFaTlmwRP5oZnhzvGKd7I');
переходим на Лист1
const ws = ss.getSheetByName('Лист1');
и в ячейку С1 устанавливаем результат из doGet()
ws.getRange('C1').setValue(result.getContent());
И в результате:
