Функция скрипта не найдена: doGet (СНОВА !!!) - PullRequest
0 голосов
/ 01 августа 2020

Итак, я прочитал почти все статьи и темы, которые могли бы про то, как заставить это работать, и, похоже, это обычная проблема с различным диапазоном причин. Мне не удалось найти решение, поэтому я надеюсь, что вы, ребята, сможете помочь.

Я опубликовал сценарий и получил типичный (функция сценария не найдена: doGet).

Вот сценарий и html код скрипта. Я загрузил новую опубликованную ссылку на файл html. Я был уверен, что сделаю «Новую» версию вместо обновления старой. Я предполагаю, что где-то есть синтаксис, который я неправильно вызвал. Я просто не знаю что и где. Надеюсь, вы можете помочь.

Вот код сценария:

    var sheetName = 'Sheet1'
    var scriptProp = PropertiesService.getScriptProperties()

    function intialSetup () {
      var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet()
      scriptProp.setProperty('key', activeSpreadsheet.getId())
    }

    function doPost (e) {
      var lock = LockService.getScriptLock()
      lock.tryLock(10000)

      try {
        var doc = SpreadsheetApp.openById(scriptProp.getProperty('key'))
        var sheet = doc.getSheetByName(sheetName)

        var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]
        var nextRow = sheet.getLastRow() + 1

        var newRow = headers.map(function(header) {
          return header === 'timestamp' ? new Date() : e.parameter[header]
        })

        sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow])

        return ContentService
          .createTextOutput(JSON.stringify({ 'result': 'success', 'row': nextRow }))
          .setMimeType(ContentService.MimeType.JSON)
      }

      catch (e) {
        return ContentService
          .createTextOutput(JSON.stringify({ 'result': 'error', 'error': e }))
          .setMimeType(ContentService.MimeType.JSON)
      }

      finally {
        lock.releaseLock()
      }
    }
        

Вот сценарий внутри HTML кода

    <script>
        const scriptURL = 'https://script.google.com/macros/s/AKfycbwzy6qtuvcOpOrl9ELoy6lM9k5CFhZWGbb-XriD1SyofDeZ6tU/exec'
        const form = document.forms['google-sheet']
      
        form.addEventListener('submit', e => {
          e.preventDefault()
          fetch(scriptURL, { method: 'POST', body: new FormData(form)})
            .then(response => alert("Thanks for Contacting us..! We Will Contact You Soon..."))
            .catch(error => console.error('Error!', error.message))
        })
      </script>

    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

1 Ответ

0 голосов
/ 02 августа 2020

doGet требуется, когда URL-адрес веб-приложения открывается с помощью веб-браузера. Код, включенный в вопрос, не включает эту функцию.

Ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...