Я прочитал сотни вопросов на форуме, но не могу найти решения.
Я хочу отправить данные моей формы (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 раз, что является точным количеством раз, когда я отправлял форму, но на моих листах ничего не публикуется.
У меня есть опыт работы в сфере маркетинга, и я знаю лишь немного кодирования (я пытаюсь научиться), но я действительно не могу понять, что мне делать.

Теперь вы можете сделать это, добавив пакет 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