Отправка формы Wix в Google Таблицы

Я прочитал сотни вопросов на форуме, но не могу найти решения.

Я хочу отправить данные моей формы (AfterSave) в Google Таблицы

Я создал веб-приложение на листе Google, которое выглядит примерно так

function doGet(e){
  return handleResponse(e);
}
        var SHEET_NAME = "Sheet1";

var SCRIPT_PROP = PropertiesService.getScriptProperties(); 

function doPost(e){
  return handleResponse(e);
}

function handleResponse(e) {
  var lock = LockService.getPublicLock();
  lock.waitLock(30000);  

  try {
    var doc = SpreadsheetApp.openById(SCRIPT_PROP.getProperty("1-L-rFuTM4oWbzcoLCfAoTGvvwC0iSiCdKtZRvl3RdRI"));
    var sheet = doc.getSheetByName(SHEET_NAME);

    var headRow = e.parameter.header_row || 1;
    var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
    var nextRow = sheet.getLastRow()+1; // get next row
    var row = []; 

    for (i in headers){
      if (headers[i] == "Timestamp"){ 
        row.push(new Date());
      } else { 
        row.push(e.parameter[headers[i]]);
      }
    }

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

    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();
  }
}

function setup() {
    var doc = SpreadsheetApp.openById('1-L-rFuTM4oWbzcoLCfAoTGvvwC0iSiCdKtZRvl3RdRI');
    SCRIPT_PROP.setProperty("key", doc.getId());
}

Затем я создал Backend .JSW на моем сайте Wix, который выглядит так:

//sendSheets.jsw

import {fetch} from 'wix-fetch';

export function sendToSheets(data) {    
    fetch("https://script.google.com/macros/s/AKfycbykq05IP_ABzQfLa9ura_pISv-zwUHZdeGb2F9681ffyzubXi9I/exec", {
        method: 'post',
        body: data
    });
}

Наконец, на моем коде страницы это выглядит так

import {sendToSheets} from 'backend/sendSheets.jsw'; 

$w.onReady(function () {
  $w("#dataset1").onAfterSave(sendToSheets);
});

export function sendFormData() {

    var data = {
        "input1":$w("#input1").value,
        "input2":$w("#input2").value,
        "dropdown1":$w("#dropdown1").value,
        "dropdown2":$w("#dropdown2").value
    };

    sendToSheets(data);

}

В итоге скрипт, который я создал в редакторе скриптов Google, показывает, что мой скрипт запускался в общей сложности 7 раз, что является точным количеством раз, когда я отправлял форму, но на моих листах ничего не публикуется.

У меня есть опыт работы в сфере маркетинга, и я знаю лишь немного кодирования (я пытаюсь научиться), но я действительно не могу понять, что мне делать.

Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
1
0
1 711
1

Ответы 1

Теперь вы можете сделать это, добавив пакет npm для googleapi, Есть отличный пример шаблона, демонстрирующий сценарий отправки формы. Процесс состоит из двух этапов: 1) Настройка учетных данных и токенов Auth2 и сохранение их в хранилище. 2) Вызов API Google при каждой отправке формы с использованием учетных данных.

в конце форма будет выглядеть так:

`` ''

function insertRow(values, authClient, ssID) {
        var sheets = google.sheets('v4');
        const request = {
            spreadsheetId: ssID,  // The ID of the spreadsheet to update.
            valueInputOption: 'RAW',  // How the input data should be interpreted.
            insertDataOption: 'INSERT_ROWS',  // How the input data should be inserted.
            range: 'A1:A2', // The A1 notation of a range to search
                            // for a logical table of data. Values will be
                            // appended after the last row of the table.
            resource: {
                "values": [
                    values
                ]
            },
            auth: authClient,
        };
        try {
            return sheets.spreadsheets.values.append(request, function (err, response) {
                if (err) {
                    console.info("error in append:" + err);
                    return;
                }
                return "ok";
            });
        } catch (err) {
            console.info("error in append values" + err);
        `enter code here`}
    }

`` ''

вы можете увидеть полный пример шаблона здесь: https://www.wix.com/code/home/forum/wix-tips-and-updates/example-google-sheets-npm

Другие вопросы по теме