Как отправить данные HTML-формы в Google Sheets

Поділитися
Вставка
  • Опубліковано 1 кві 2023
  • Смотрим как (1) устроена HTML-форма, (2) CSS-стили для неё, (3) как устроена функция doPost() в Google Таблице и (4) как устроен JavaScript на HTML-странице (спойлер - используется Fetch API)
    👉 [01:08] 1. Как устроена форма на HTML
    👉 [03:53] 2. CSS-оформление
    👉 [04:53] 3. JavaScript в Google Таблицах
    👉 [12:09] 3. JavaScript в HTML-документе
    Код из примера: codepen.io/htmllabru/pen/ExeMWYw

КОМЕНТАРІ • 55

  • @Someoneisdoingsomething
    @Someoneisdoingsomething 6 місяців тому +1

    было полезно. Спасибо за труд!

  • @test4248
    @test4248 Рік тому +2

    Шикарное видео 🎉

  • @user-bq3vg1kd9i
    @user-bq3vg1kd9i Рік тому +1

    Отличное видео! Спасибо большое, очень классный кейс разобрали !

    • @HtmllabRu
      @HtmllabRu  Рік тому

      Эдуард, спасибо за отзыв!

  • @user-kz8og5mm9o
    @user-kz8og5mm9o 7 місяців тому

    Спасибо, мне очень помогло

  • @web-dev-pro
    @web-dev-pro 7 місяців тому +2

    Спасибо! Годный туториал, переделал правда на PHP через CURL, потому что стандартное PHP API гугла слишком замороченное

    • @HtmllabRu
      @HtmllabRu  7 місяців тому +1

      Класс, рад, что пригодилось!

    • @user-ho9gg7xg2k
      @user-ho9gg7xg2k 7 місяців тому +1

      Здравствуйте! А можете показать код как переделали?

  • @INTTable
    @INTTable Рік тому

    Видос спустя год, круто

    • @HtmllabRu
      @HtmllabRu  Рік тому

      это так, верно подметили

  • @viktoriyapshenychna3966
    @viktoriyapshenychna3966 11 місяців тому

    здравствуйте! возможна ли работа скрипта, если на странице больше одной формы? У меня работает только в первой, на других страницах тоже работает только первая из форм.
    Спасибо!

    • @HtmllabRu
      @HtmllabRu  11 місяців тому

      Приветствую! У форм разные атрибуты id?

  • @user-zw8ty2ww2h
    @user-zw8ty2ww2h 7 місяців тому

    У меня вот такая ошибка в консоли браузера: TypeError: Cannot set properties of null (setting 'action') со ссылкой на строку: form.action = URL_APP; Url своей таблицы я вставлял. Что это может быть?

    • @HtmllabRu
      @HtmllabRu  7 місяців тому

      Фрагмент с определением формы ( const form = document.querySelector("#form");) присутствует?

  • @wbqs
    @wbqs Рік тому

    а если неизвестное количество данных может прийти в POST запросе, как тогда это обработать в APPS script?

    • @HtmllabRu
      @HtmllabRu  Рік тому

      получать JSON-массив объектов, бегать по ним через .forEach и сохранять

  • @xaaser2006
    @xaaser2006 9 місяців тому

    Ваш код не заработает при обращении к гугл-скрипту. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled

    • @HtmllabRu
      @HtmllabRu  9 місяців тому +1

      В codepen я указал URL_APP с измененным адресом, в константу нужно подставить свой URL развернутого приложения.
      Код ещё раз протестировал - работает, отправляет записи в форму (даже с некорректным свойством "cors").
      Благодаря вашему комментарию, нашел ошибку в указании cors (нет свойства "cors" , есть свойство "mode"). Когда снимал видео, не заметил, а fetch воспринял это как значение по умолчанию (mode:"cors") - потому работало. Спасибо 👍.
      Добавил комментарий в код на codepen.

  • @valeriiaoksiutenko9777
    @valeriiaoksiutenko9777 7 місяців тому

    Тысяча лайков 😊 спасибо 😊

    • @HtmllabRu
      @HtmllabRu  7 місяців тому

      рад, что пригодилось)

  • @emikam
    @emikam 4 місяці тому +1

    Спасибо, намучался с этими CORS. Внутри гугла данные отправляются и принимаются, а вот с внешнего ресурса api настройку хотел, а там ещё больше танцев с получением ключей. Ответы от сервера не нужны, CORS выключил и заработало.

  • @xaaser2006
    @xaaser2006 9 місяців тому

    Привет. А можешь сделать ролик как изображение прикрепить из формы в таблицу

    • @HtmllabRu
      @HtmllabRu  9 місяців тому

      Интересно, подумаю над этим 👍

    • @xaaser2006
      @xaaser2006 9 місяців тому

      мне просто надо не просто номер паспорта вводить, а фотку прикреплять. За это делюсь как с поля даты нормально заполнить таблицу. В гугл скрипте date = date.split("-").reverse().join(".");@@HtmllabRu

  • @stanoverlay6167
    @stanoverlay6167 Рік тому +1

    Вопрос - запрос (ftech) отдает 401 код - в чем может быть проблема?

    • @HtmllabRu
      @HtmllabRu  Рік тому

      в видео логин и пароль не отправляются, мб что-то с развертыванием?

    • @Makaler
      @Makaler Рік тому

      + такая же ошибка. Без понятия поч не работает(

    • @user-jl1bc2zv3f
      @user-jl1bc2zv3f 9 місяців тому

      @@HtmllabRu тоже ловлю 401(не авторизован), и еще Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'type') для if( result.type === 'success' ).

    • @user-jl1bc2zv3f
      @user-jl1bc2zv3f 9 місяців тому

      @@HtmllabRu как быть?

    • @HtmllabRu
      @HtmllabRu  9 місяців тому

      @@user-jl1bc2zv3f в URL_APP свой URL развернутого приложения указали ?

  • @kv3453
    @kv3453 11 місяців тому

    А забрать обратно с таблицы на html страницу можно ?

    • @HtmllabRu
      @HtmllabRu  11 місяців тому +1

      Да, там есть обработчик doGet

    • @kv3453
      @kv3453 11 місяців тому

      @@HtmllabRu так это можно как бэкэнд использовать получается я обзорно посмотрел это видео теперь подробно изучу , спасибо !

    • @HtmllabRu
      @HtmllabRu  11 місяців тому +1

      @@kv3453 , встречал упоминание что используют как хранилище данных сайта, чтобы пользователю через таблицы контент было легче менять)

  • @user-ue5gf5jl2x
    @user-ue5gf5jl2x Місяць тому

    А если в форме есть select? Что в скриптах?

    • @HtmllabRu
      @HtmllabRu  27 днів тому

      Дописал codepen для статического select. Для динамического (на основе ячеек из таблицы), нужно делать лишний запрос и формировать элементы option налету

  • @user-ci9rg4vp7p
    @user-ci9rg4vp7p 9 місяців тому +2

    выдает сообщение "Ошибка!" не могу понять в чем она,
    код скопировал поменял только ссылки приложения и ссылки страницы

    • @HtmllabRu
      @HtmllabRu  9 місяців тому

      Попробуйте перед alert со словами об ошибки вывести объект с результатом: console.log(result) - возможно вывод в консоли поможет разобраться в причине ошибки

    • @user-ci9rg4vp7p
      @user-ci9rg4vp7p 9 місяців тому +1

      кодсоль выдает ошибку ) ReferenceError: Cannot access 'result' before initialization
      отчего так может быть, подскажите пожалуйста?
      @@HtmllabRu

    • @user-ci9rg4vp7p
      @user-ci9rg4vp7p 9 місяців тому

      а также вот такую
      Access to fetch at 'script.google.com/macros/s/AKfycbxSacbvDJyqkon1wHfeBtEmjW0JgpfM41ylfpl1OjnijDExwPhATKd6gA464-fXvdwx/exec' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

    • @xaaser2006
      @xaaser2006 9 місяців тому

      там проблема с cors Ваш fetch запрос сейчас не отправляется@@HtmllabRu

    • @HtmllabRu
      @HtmllabRu  9 місяців тому

      @@user-ci9rg4vp7p в константе URL_APP указали свой адрес веб-приложения на Google Apps Script? Спрашиваю, потому что столкнулся с тем, что некоторые копирую код, но не разворачивают своё приложение.

  • @longflowstudio
    @longflowstudio 7 місяців тому

    Хорошее видео, но у меня почуму-то вместо alert появляется текстовый вывод с сообщением

    • @HtmllabRu
      @HtmllabRu  6 місяців тому

      Что пишет?

  • @solvex8304
    @solvex8304 Рік тому

    Насколько я знаю, форма по-умолчанию отправляется как раз Постом а не Гетом.

    • @HtmllabRu
      @HtmllabRu  Рік тому

      по-умолчанию - GET.

  • @malenkiy.huligan
    @malenkiy.huligan Рік тому

    Звука нету

    • @HtmllabRu
      @HtmllabRu  Рік тому

      Совсем плохо со звуком? (